You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-06-17 00:17:59 +02:00
fix schema migration requiring web context
This commit is contained in:
@ -9,6 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
"github.com/aws/aws-sdk-go/service/cloudfront"
|
"github.com/aws/aws-sdk-go/service/cloudfront"
|
||||||
@ -18,7 +19,6 @@ import (
|
|||||||
"github.com/iancoleman/strcase"
|
"github.com/iancoleman/strcase"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
|
||||||
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ type Env = string
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
EnvDev Env = webcontext.Env_Dev
|
EnvDev Env = webcontext.Env_Dev
|
||||||
EnvStage Env = webcontext.Env_Stage
|
EnvStage Env = webcontext.Env_Stage
|
||||||
EnvProd Env = webcontext.Env_Prod
|
EnvProd Env = webcontext.Env_Prod
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ import (
|
|||||||
type Function = string
|
type Function = string
|
||||||
|
|
||||||
var (
|
var (
|
||||||
Function_Ddlogscollector = "ddlogscollector"
|
Function_Ddlogscollector = "ddlogscollector"
|
||||||
Function_YourNewFunction = "your-new-function"
|
Function_YourNewFunction = "your-new-function"
|
||||||
)
|
)
|
||||||
|
|
||||||
// List of function names used by main.go for help.
|
// List of function names used by main.go for help.
|
||||||
|
@ -4,13 +4,13 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
|
||||||
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RunSchemaMigrationsForTargetEnv executes the build commands for a target service.
|
// RunSchemaMigrationsForTargetEnv executes schema migrations for the target environment.
|
||||||
func RunSchemaMigrationsForTargetEnv(log *log.Logger, awsCredentials devdeploy.AwsCredentials, targetEnv Env, isUnittest bool) error {
|
func RunSchemaMigrationsForTargetEnv(log *log.Logger, awsCredentials devdeploy.AwsCredentials, targetEnv Env, isUnittest bool) error {
|
||||||
|
|
||||||
cfgCtx, err := NewConfigContext(targetEnv, awsCredentials)
|
cfgCtx, err := NewConfigContext(targetEnv, awsCredentials)
|
||||||
@ -34,5 +34,5 @@ func RunSchemaMigrationsForTargetEnv(log *log.Logger, awsCredentials devdeploy.A
|
|||||||
}
|
}
|
||||||
defer masterDb.Close()
|
defer masterDb.Close()
|
||||||
|
|
||||||
return schema.Migrate(context.Background(), masterDb, log, false)
|
return schema.Migrate(context.Background(), targetEnv, masterDb, log, false)
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,10 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/service/ecs"
|
"github.com/aws/aws-sdk-go/service/ecs"
|
||||||
"github.com/iancoleman/strcase"
|
"github.com/iancoleman/strcase"
|
||||||
|
"github.com/pkg/errors"
|
||||||
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
||||||
"gopkg.in/go-playground/validator.v9"
|
"gopkg.in/go-playground/validator.v9"
|
||||||
)
|
)
|
||||||
@ -33,12 +33,12 @@ var ServiceNames = []Service{
|
|||||||
// ServiceConfig defines the settings for a service.
|
// ServiceConfig defines the settings for a service.
|
||||||
type ServiceConfig struct {
|
type ServiceConfig struct {
|
||||||
// Required flags.
|
// Required flags.
|
||||||
Name string `validate:"required" example:"web-api"`
|
Name string `validate:"required" example:"web-api"`
|
||||||
ServiceHostPrimary string `validate:"required" example:"example-project.com"`
|
ServiceHostPrimary string `validate:"required" example:"example-project.com"`
|
||||||
DesiredCount int `validate:"required" example:"2"`
|
DesiredCount int `validate:"required" example:"2"`
|
||||||
ServiceDir string `validate:"required"`
|
ServiceDir string `validate:"required"`
|
||||||
Dockerfile string `validate:"required" example:"./cmd/web-api/Dockerfile"`
|
Dockerfile string `validate:"required" example:"./cmd/web-api/Dockerfile"`
|
||||||
ReleaseTag string `validate:"required"`
|
ReleaseTag string `validate:"required"`
|
||||||
|
|
||||||
// Optional flags.
|
// Optional flags.
|
||||||
ServiceHostNames []string `validate:"omitempty" example:"subdomain.example-project.com"`
|
ServiceHostNames []string `validate:"omitempty" example:"subdomain.example-project.com"`
|
||||||
@ -89,7 +89,7 @@ func NewServiceConfig(serviceName string, cfg *devdeploy.Config) (ServiceConfig,
|
|||||||
|
|
||||||
// Set the hostnames for the service.
|
// Set the hostnames for the service.
|
||||||
if cfg.Env == EnvProd {
|
if cfg.Env == EnvProd {
|
||||||
srv.ServiceHostPrimary = "example.saasstartupkit.com"
|
srv.ServiceHostPrimary = "example.saasstartupkit.com"
|
||||||
|
|
||||||
// Any hostname listed here that doesn't match the primary hostname will be updated in Route 53 but the
|
// Any hostname listed here that doesn't match the primary hostname will be updated in Route 53 but the
|
||||||
// service itself will redirect any requests back to the primary hostname.
|
// service itself will redirect any requests back to the primary hostname.
|
||||||
@ -97,7 +97,7 @@ func NewServiceConfig(serviceName string, cfg *devdeploy.Config) (ServiceConfig,
|
|||||||
fmt.Sprintf("%s.example.saasstartupkit.com", cfg.Env),
|
fmt.Sprintf("%s.example.saasstartupkit.com", cfg.Env),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
srv.ServiceHostPrimary = fmt.Sprintf("%s.example.saasstartupkit.com", cfg.Env)
|
srv.ServiceHostPrimary = fmt.Sprintf("%s.example.saasstartupkit.com", cfg.Env)
|
||||||
}
|
}
|
||||||
|
|
||||||
case ServiceWebApi:
|
case ServiceWebApi:
|
||||||
@ -111,8 +111,8 @@ func NewServiceConfig(serviceName string, cfg *devdeploy.Config) (ServiceConfig,
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
return ServiceConfig{}, errors.Wrapf(devdeploy.ErrInvalidService,
|
return ServiceConfig{}, errors.Wrapf(devdeploy.ErrInvalidService,
|
||||||
"No service config defined for service '%s'",
|
"No service config defined for service '%s'",
|
||||||
serviceName)
|
serviceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the docker file if no custom one has been defined for the service.
|
// Set the docker file if no custom one has been defined for the service.
|
||||||
@ -140,7 +140,6 @@ func (c ServiceConfig) BaseUrl() string {
|
|||||||
return fmt.Sprintf("%s://%s/", schema, c.ServiceHostPrimary)
|
return fmt.Sprintf("%s://%s/", schema, c.ServiceHostPrimary)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// NewServiceContext returns the ServiceContext for a service that is configured for the target deployment env.
|
// NewServiceContext returns the ServiceContext for a service that is configured for the target deployment env.
|
||||||
func NewServiceContext(serviceName Service, cfg *devdeploy.Config) (*ServiceContext, error) {
|
func NewServiceContext(serviceName Service, cfg *devdeploy.Config) (*ServiceContext, error) {
|
||||||
|
|
||||||
@ -193,7 +192,6 @@ func NewServiceContext(serviceName Service, cfg *devdeploy.Config) (*ServiceCont
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// =========================================================================
|
// =========================================================================
|
||||||
// Service dependant settings.
|
// Service dependant settings.
|
||||||
|
|
||||||
@ -306,7 +304,6 @@ func NewServiceContext(serviceName Service, cfg *devdeploy.Config) (*ServiceCont
|
|||||||
return def, nil
|
return def, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Define the ServiceContext for the web-api that will be used for build and deploy.
|
// Define the ServiceContext for the web-api that will be used for build and deploy.
|
||||||
case ServiceWebApi:
|
case ServiceWebApi:
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/urfave/cli"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/build/cicd/internal/config"
|
"geeks-accelerator/oss/saas-starter-kit/build/cicd/internal/config"
|
||||||
|
"github.com/urfave/cli"
|
||||||
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
"gitlab.com/geeks-accelerator/oss/devops/pkg/devdeploy"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import (
|
|||||||
|
|
||||||
// Account represents the Account API method handler set.
|
// Account represents the Account API method handler set.
|
||||||
type Accounts struct {
|
type Accounts struct {
|
||||||
Repository *account.Repository
|
Repository *account.Repository
|
||||||
|
|
||||||
// ADD OTHER STATE LIKE THE LOGGER AND CONFIG HERE.
|
// ADD OTHER STATE LIKE THE LOGGER AND CONFIG HERE.
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,14 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/account/account_preference"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/mid"
|
"geeks-accelerator/oss/saas-starter-kit/internal/mid"
|
||||||
saasSwagger "geeks-accelerator/oss/saas-starter-kit/internal/mid/saas-swagger"
|
saasSwagger "geeks-accelerator/oss/saas-starter-kit/internal/mid/saas-swagger"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
_ "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
_ "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account/account_preference"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/project"
|
"geeks-accelerator/oss/saas-starter-kit/internal/project"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/signup"
|
"geeks-accelerator/oss/saas-starter-kit/internal/signup"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user"
|
"geeks-accelerator/oss/saas-starter-kit/internal/user"
|
||||||
|
@ -12,18 +12,18 @@ import (
|
|||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account/account_preference"
|
"geeks-accelerator/oss/saas-starter-kit/internal/account/account_preference"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/project"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/signup"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user_account"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user_account/invite"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user_auth"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/mid"
|
"geeks-accelerator/oss/saas-starter-kit/internal/mid"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/project"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/project_route"
|
"geeks-accelerator/oss/saas-starter-kit/internal/project_route"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/signup"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user_account"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user_account/invite"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user_auth"
|
||||||
|
|
||||||
"github.com/ikeikeikeike/go-sitemap-generator/v2/stm"
|
"github.com/ikeikeikeike/go-sitemap-generator/v2/stm"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
type Signup struct {
|
type Signup struct {
|
||||||
SignupRepo *signup.Repository
|
SignupRepo *signup.Repository
|
||||||
AuthRepo *user_auth.Repository
|
AuthRepo *user_auth.Repository
|
||||||
GeoRepo *geonames.Repository
|
GeoRepo *geonames.Repository
|
||||||
MasterDB *sqlx.DB
|
MasterDB *sqlx.DB
|
||||||
Renderer web.Renderer
|
Renderer web.Renderer
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/datatable"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/datatable"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web"
|
||||||
|
@ -20,15 +20,10 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account/account_preference"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/project"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/signup"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user_account"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user_account/invite"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user_auth"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/cmd/web-app/handlers"
|
"geeks-accelerator/oss/saas-starter-kit/cmd/web-app/handlers"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
"geeks-accelerator/oss/saas-starter-kit/internal/account"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/account/account_preference"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/mid"
|
"geeks-accelerator/oss/saas-starter-kit/internal/mid"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/auth"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/devops"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/devops"
|
||||||
@ -39,8 +34,13 @@ import (
|
|||||||
template_renderer "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/template-renderer"
|
template_renderer "geeks-accelerator/oss/saas-starter-kit/internal/platform/web/template-renderer"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/weberror"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/project"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/project_route"
|
"geeks-accelerator/oss/saas-starter-kit/internal/project_route"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/signup"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/user"
|
"geeks-accelerator/oss/saas-starter-kit/internal/user"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user_account"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user_account/invite"
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/user_auth"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/csv"
|
"encoding/csv"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
"geeks-accelerator/oss/saas-starter-kit/internal/geonames"
|
||||||
"github.com/geeks-accelerator/sqlxmigrate"
|
"github.com/geeks-accelerator/sqlxmigrate"
|
||||||
|
@ -3,12 +3,24 @@ package schema
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"log"
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
"github.com/geeks-accelerator/sqlxmigrate"
|
"github.com/geeks-accelerator/sqlxmigrate"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Migrate(ctx context.Context, masterDb *sqlx.DB, log *log.Logger, isUnittest bool) error {
|
// Migrate is the entry point for performing init schema and running all the migrations.
|
||||||
|
func Migrate(ctx context.Context, targetEnv webcontext.Env, masterDb *sqlx.DB, log *log.Logger, isUnittest bool) error {
|
||||||
|
|
||||||
|
// Set the context with the required values to
|
||||||
|
// process the request.
|
||||||
|
v := webcontext.Values{
|
||||||
|
Now: time.Now(),
|
||||||
|
Env: targetEnv,
|
||||||
|
}
|
||||||
|
ctx = context.WithValue(ctx, webcontext.KeyValues, &v)
|
||||||
|
|
||||||
// Load list of Schema migrations and init new sqlxmigrate client
|
// Load list of Schema migrations and init new sqlxmigrate client
|
||||||
migrations := migrationList(ctx, masterDb, log, isUnittest)
|
migrations := migrationList(ctx, masterDb, log, isUnittest)
|
||||||
m := sqlxmigrate.New(masterDb, sqlxmigrate.DefaultOptions, migrations)
|
m := sqlxmigrate.New(masterDb, sqlxmigrate.DefaultOptions, migrations)
|
||||||
|
@ -9,11 +9,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/urfave/cli"
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
|
"github.com/urfave/cli"
|
||||||
sqltrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql"
|
sqltrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql"
|
||||||
sqlxtrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/jmoiron/sqlx"
|
sqlxtrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/jmoiron/sqlx"
|
||||||
)
|
)
|
||||||
@ -59,54 +59,54 @@ func main() {
|
|||||||
Name: "env",
|
Name: "env",
|
||||||
Usage: fmt.Sprintf("target environment, one of [%s]",
|
Usage: fmt.Sprintf("target environment, one of [%s]",
|
||||||
strings.Join(webcontext.EnvNames, ", ")),
|
strings.Join(webcontext.EnvNames, ", ")),
|
||||||
Value: "dev",
|
Value: "dev",
|
||||||
EnvVar: "ENV",
|
EnvVar: "ENV",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "host",
|
Name: "host",
|
||||||
Usage: "host",
|
Usage: "host",
|
||||||
Value:"127.0.0.1:5433",
|
Value: "127.0.0.1:5433",
|
||||||
EnvVar: "SCHEMA_DB_HOST",
|
EnvVar: "SCHEMA_DB_HOST",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "user",
|
Name: "user",
|
||||||
Usage: "username",
|
Usage: "username",
|
||||||
Value: "postgres",
|
Value: "postgres",
|
||||||
EnvVar: "SCHEMA_DB_USER",
|
EnvVar: "SCHEMA_DB_USER",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "pass",
|
Name: "pass",
|
||||||
Usage: "password",
|
Usage: "password",
|
||||||
Value: "postgres",
|
Value: "postgres",
|
||||||
EnvVar: "SCHEMA_DB_PASS",
|
EnvVar: "SCHEMA_DB_PASS",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "database",
|
Name: "database",
|
||||||
Usage: "name of the default",
|
Usage: "name of the default",
|
||||||
Value: "shared",
|
Value: "shared",
|
||||||
EnvVar: "SCHEMA_DB_DATABASE",
|
EnvVar: "SCHEMA_DB_DATABASE",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "driver",
|
Name: "driver",
|
||||||
Usage: "database drive to use for connection",
|
Usage: "database drive to use for connection",
|
||||||
Value: "postgres",
|
Value: "postgres",
|
||||||
EnvVar: "SCHEMA_DB_DRIVER",
|
EnvVar: "SCHEMA_DB_DRIVER",
|
||||||
},
|
},
|
||||||
cli.BoolTFlag{
|
cli.BoolTFlag{
|
||||||
Name: "disable-tls",
|
Name: "disable-tls",
|
||||||
Usage: "disable TLS for the database connection",
|
Usage: "disable TLS for the database connection",
|
||||||
EnvVar: "SCHEMA_DB_DISABLE_TLS",
|
EnvVar: "SCHEMA_DB_DISABLE_TLS",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
targetEnv := c.String("env")
|
targetEnv := c.String("env")
|
||||||
var dbInfo = DB {
|
var dbInfo = DB{
|
||||||
Host : c.String("host"),
|
Host: c.String("host"),
|
||||||
User : c.String("user"),
|
User: c.String("user"),
|
||||||
Pass : c.String("pass"),
|
Pass: c.String("pass"),
|
||||||
Database : c.String("database"),
|
Database: c.String("database"),
|
||||||
|
|
||||||
Driver : c.String("driver"),
|
Driver: c.String("driver"),
|
||||||
DisableTLS: c.Bool("disable-tls"),
|
DisableTLS: c.Bool("disable-tls"),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,16 +160,10 @@ func runMigrate(log *log.Logger, targetEnv string, dbInfo DB) error {
|
|||||||
// =========================================================================
|
// =========================================================================
|
||||||
// Start Migrations
|
// Start Migrations
|
||||||
|
|
||||||
// Set the context with the required values to
|
ctx := context.Background()
|
||||||
// process the request.
|
|
||||||
v := webcontext.Values{
|
|
||||||
Now: time.Now(),
|
|
||||||
Env: targetEnv,
|
|
||||||
}
|
|
||||||
ctx := context.WithValue(context.Background(), webcontext.KeyValues, &v)
|
|
||||||
|
|
||||||
// Execute the migrations
|
// Execute the migrations
|
||||||
if err = schema.Migrate(ctx, masterDb, log, false); err != nil {
|
if err = schema.Migrate(ctx, env, masterDb, log, false); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user