migrate.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/bash
  2. LAST_NUM_STR=`find ./support/migrate/ -maxdepth 1 -name '*.go' | sort -t_ -nk2,2 | tail -n1 | awk -F/ '{print $NF}' | awk -F. '{print $NR}'`
  3. LAST_NUM_STR=`echo "$LAST_NUM_STR" | sed 's/^[0]*//g'`
  4. NEXT_NUM_INT=$(($LAST_NUM_STR + 1))
  5. NEXT_NUM_STR=`printf %09d $NEXT_NUM_INT`
  6. TARGET_FILE="./support/migrate/${NEXT_NUM_STR}.go"
  7. # Create new migration file
  8. echo "package migrate" > $TARGET_FILE
  9. echo "" >> $TARGET_FILE
  10. echo "import (" >> $TARGET_FILE
  11. echo " \"golang-fave/engine/sqlw\"" >> $TARGET_FILE
  12. echo ")" >> $TARGET_FILE
  13. echo "" >> $TARGET_FILE
  14. echo "func Migrate_${NEXT_NUM_STR}(db *sqlw.DB, host string) error {" >> $TARGET_FILE
  15. echo " return nil" >> $TARGET_FILE
  16. echo "}" >> $TARGET_FILE
  17. # Update list
  18. LIST_FILE="./support/migrate/000000001.go"
  19. echo "package migrate" > $LIST_FILE
  20. echo "" >> $LIST_FILE
  21. echo "import (" >> $LIST_FILE
  22. echo " \"golang-fave/engine/sqlw\"" >> $LIST_FILE
  23. echo ")" >> $LIST_FILE
  24. echo "" >> $LIST_FILE
  25. echo "var Migrations = map[string]func(*sqlw.DB, string) error{" >> $LIST_FILE
  26. echo " \"000000000\": nil," >> $LIST_FILE
  27. echo " \"000000001\": nil," >> $LIST_FILE
  28. for i in `ls ./support/migrate/*.go | sort -V`; do
  29. IFILE=`echo "$i" | awk -F/ '{print $NF}' | awk -F. '{print $NR}'`
  30. if [ $IFILE == "000000000" ] || [ $IFILE == "000000001" ]; then
  31. continue
  32. fi
  33. echo " \"${IFILE}\": Migrate_${IFILE}," >> $LIST_FILE
  34. done
  35. echo "}" >> $LIST_FILE
  36. echo "New migration file created: ${TARGET_FILE}"