mirror of https://github.com/JustKato/FreePad.git
Stable Migrations 1.1.0
+ Finally implemented stable migrations for mysql
This commit is contained in:
parent
6268ee2b7f
commit
48cacb601d
|
@ -4,3 +4,4 @@ dev/*
|
||||||
docker-compose.yaml
|
docker-compose.yaml
|
||||||
# Ignore the database file
|
# Ignore the database file
|
||||||
dist/main.db
|
dist/main.db
|
||||||
|
dist/freepad
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
FROM alpine
|
FROM alpine
|
||||||
|
|
||||||
LABEL version="1.0.0"
|
LABEL version="1.1.0"
|
||||||
|
|
||||||
# Copy the distribution files
|
# Copy the distribution files
|
||||||
COPY ./dist /app
|
COPY ./dist /app
|
||||||
|
|
2
build.sh
2
build.sh
|
@ -10,7 +10,7 @@ MYDIR=`pwd`;
|
||||||
cd src;
|
cd src;
|
||||||
# Build
|
# Build
|
||||||
echo "Building..."
|
echo "Building..."
|
||||||
export GIN_MODE=release;
|
export RELEASE_MODE=1;
|
||||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o ../dist/freepad .
|
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o ../dist/freepad .
|
||||||
# Go back!
|
# Go back!
|
||||||
cd $MYDIR;
|
cd $MYDIR;
|
|
@ -3,13 +3,16 @@
|
||||||
echo "Removing old";
|
echo "Removing old";
|
||||||
rm dist/freepad;
|
rm dist/freepad;
|
||||||
|
|
||||||
|
# Yeah, this is my solution
|
||||||
|
export DOMAIN_BASE CACHE_MAP_LIMIT API_BAN_LIMIT DATABASE_DRIVER MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD MYSQL_URL MYSQL_PORT
|
||||||
|
|
||||||
# Remember current path
|
# Remember current path
|
||||||
MYDIR=`pwd`;
|
MYDIR=`pwd`;
|
||||||
# Go into src
|
# Go into src
|
||||||
cd src;
|
cd src;
|
||||||
# Build
|
# Build
|
||||||
echo "Building..."
|
echo "Building..."
|
||||||
export GIN_MODE=debug;
|
unset RELEASE_MODE;
|
||||||
go build -o ../dist/freepad .
|
go build -o ../dist/freepad .
|
||||||
# Go back!
|
# Go back!
|
||||||
cd $MYDIR;
|
cd $MYDIR;
|
||||||
|
@ -18,4 +21,5 @@ MYPATH=`pwd`;
|
||||||
|
|
||||||
cd dist
|
cd dist
|
||||||
|
|
||||||
|
source ../.env
|
||||||
./freepad && cd $MYPATH;
|
./freepad && cd $MYPATH;
|
|
@ -1,13 +1,19 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/JustKato/FreePad/models/database"
|
||||||
"github.com/JustKato/FreePad/routes"
|
"github.com/JustKato/FreePad/routes"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
_, isRelease := os.LookupEnv("RELEASE_MODE")
|
||||||
|
if isRelease {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the router
|
// Initialize the router
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
@ -25,6 +31,9 @@ func main() {
|
||||||
|
|
||||||
// TODO: Sockets: https://gist.github.com/supanadit/f6de65fc5896e8bb0c4656e451387d0f
|
// TODO: Sockets: https://gist.github.com/supanadit/f6de65fc5896e8bb0c4656e451387d0f
|
||||||
|
|
||||||
|
// Try and run migrations
|
||||||
|
database.MigrateMysql()
|
||||||
|
|
||||||
router.Run(":8080")
|
router.Run(":8080")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,16 @@ func GetLiteConn() (*sql.DB, error) {
|
||||||
return db, nil
|
return db, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMysqlString() string {
|
||||||
|
|
||||||
|
user := os.Getenv("MYSQL_USER")
|
||||||
|
password := os.Getenv("MYSQL_PASSWORD")
|
||||||
|
dburl := os.Getenv("MYSQL_URL")
|
||||||
|
dbname := os.Getenv("MYSQL_DATABASE")
|
||||||
|
|
||||||
|
return fmt.Sprintf("mysql://%s:%s@tcp(%s:3306)/%s", user, password, dburl, dbname)
|
||||||
|
}
|
||||||
|
|
||||||
func GetMysqlConn() (*sql.DB, error) {
|
func GetMysqlConn() (*sql.DB, error) {
|
||||||
|
|
||||||
user := os.Getenv("MYSQL_USER")
|
user := os.Getenv("MYSQL_USER")
|
||||||
|
|
|
@ -5,10 +5,29 @@ import (
|
||||||
|
|
||||||
"github.com/golang-migrate/migrate/v4"
|
"github.com/golang-migrate/migrate/v4"
|
||||||
|
|
||||||
_ "github.com/golang-migrate/migrate/v4/database/sqlite"
|
_ "github.com/golang-migrate/migrate/v4/database/mysql"
|
||||||
_ "github.com/golang-migrate/migrate/v4/source/file"
|
_ "github.com/golang-migrate/migrate/v4/source/file"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func MigrateMysql() error {
|
||||||
|
|
||||||
|
m, err := migrate.New(
|
||||||
|
"file://db/migrations/",
|
||||||
|
GetMysqlString(),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Migrate
|
||||||
|
err = m.Up()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return m.Run()
|
||||||
|
}
|
||||||
|
|
||||||
// Run migrations to ensure tables exist
|
// Run migrations to ensure tables exist
|
||||||
func MigrationUpdate() *migrate.Logger {
|
func MigrationUpdate() *migrate.Logger {
|
||||||
// Get the path to the sqlite database
|
// Get the path to the sqlite database
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
|
|
||||||
"github.com/JustKato/FreePad/controllers/post"
|
"github.com/JustKato/FreePad/controllers/post"
|
||||||
"github.com/JustKato/FreePad/helper"
|
"github.com/JustKato/FreePad/helper"
|
||||||
"github.com/JustKato/FreePad/models/database"
|
|
||||||
"github.com/JustKato/FreePad/types"
|
"github.com/JustKato/FreePad/types"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
@ -67,9 +66,6 @@ func ApiRoutes(route *gin.RouterGroup) {
|
||||||
// Add in health checks
|
// Add in health checks
|
||||||
route.GET("/health", healthCheck)
|
route.GET("/health", healthCheck)
|
||||||
|
|
||||||
route.POST("/test", func(ctx *gin.Context) {
|
|
||||||
ctx.JSON(200, database.MigrationUpdate())
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func healthCheck(ctx *gin.Context) {
|
func healthCheck(ctx *gin.Context) {
|
||||||
|
|
Loading…
Reference in New Issue