From 85f7f0b391eb75b6313e7f28fd959f9f964fc3b8 Mon Sep 17 00:00:00 2001 From: naj1n Date: Wed, 30 Nov 2022 17:23:13 +0800 Subject: [PATCH 1/3] optimize: change FetchUserByUKey function logic --- internal/repository/basicuser.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/internal/repository/basicuser.go b/internal/repository/basicuser.go index e23a8e4c..9d1a8050 100644 --- a/internal/repository/basicuser.go +++ b/internal/repository/basicuser.go @@ -15,7 +15,6 @@ package repository import ( - "errors" "time" "github.com/google/uuid" @@ -88,13 +87,10 @@ func (impl *UserRepositoryImpl) RetrieveByID(id int) (*User, error) { } func (impl *UserRepositoryImpl) FetchUserByUKey(id int, uid uuid.UUID) (*User, error) { - var users []User - if err := impl.db.Where("id = ? AND uid = ?", id, uid).Find(&users).Error; err != nil { + var user User + if err := impl.db.Where("uid = ? AND id = ?", uid, id).First(&user).Error; err != nil { return &User{}, err } - if len(users) != 1 { - return &User{}, errors.New("unable to get the corresponding record") - } - return &users[0], nil + return &user, nil } From ccbdc4df3e3045686c3627bd9c1380a695c744eb Mon Sep 17 00:00:00 2001 From: naj1n Date: Thu, 1 Dec 2022 11:15:04 +0800 Subject: [PATCH 2/3] feat: add `supabase database` support --- pkg/action/factory.go | 3 ++- pkg/action/service.go | 5 +++-- pkg/app/service.go | 2 +- pkg/resource/factory.go | 3 ++- pkg/resource/service.go | 5 +++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/action/factory.go b/pkg/action/factory.go index bcc99880..ecdfe4bb 100644 --- a/pkg/action/factory.go +++ b/pkg/action/factory.go @@ -38,6 +38,7 @@ var ( ELASTICSEARCH_ACTION = "elasticsearch" S3_ACTION = "s3" SMTP_ACTION = "smtp" + SUPABASEDB_ACTION = "supabasedb" ) type AbstractActionFactory interface { @@ -56,7 +57,7 @@ func (f *Factory) Build() common.DataConnector { case MYSQL_ACTION, MARIADB_ACTION, TIDB_ACTION: sqlAction := &mysql.MySQLConnector{} return sqlAction - case POSTGRESQL_ACTION: + case POSTGRESQL_ACTION, SUPABASEDB_ACTION: pgsAction := &postgresql.Connector{} return pgsAction case REDIS_ACTION: diff --git a/pkg/action/service.go b/pkg/action/service.go index d60df913..c2440a2e 100644 --- a/pkg/action/service.go +++ b/pkg/action/service.go @@ -23,7 +23,7 @@ import ( "go.uber.org/zap" ) -var type_array = [12]string{"transformer", "restapi", "graphql", "redis", "mysql", "mariadb", "postgresql", "mongodb", "tidb", "elasticsearch", "s3", "smtp"} +var type_array = [13]string{"transformer", "restapi", "graphql", "redis", "mysql", "mariadb", "postgresql", "mongodb", "tidb", "elasticsearch", "s3", "smtp", "supabasedb"} var type_map = map[string]int{ "transformer": 0, "restapi": 1, @@ -37,6 +37,7 @@ var type_map = map[string]int{ "elasticsearch": 9, "s3": 10, "smtp": 11, + "supabasedb": 12, } type ActionService interface { @@ -55,7 +56,7 @@ type ActionDto struct { Version int `json:"-"` Resource int `json:"resourceId,omitempty"` DisplayName string `json:"displayName" validate:"required"` - Type string `json:"actionType" validate:"oneof=transformer restapi graphql redis mysql mariadb postgresql mongodb tidb elasticsearch s3 smtp"` + Type string `json:"actionType" validate:"oneof=transformer restapi graphql redis mysql mariadb postgresql mongodb tidb elasticsearch s3 smtp supabasedb"` Template map[string]interface{} `json:"content" validate:"required"` Transformer map[string]interface{} `json:"transformer" validate:"required"` TriggerMode string `json:"triggerMode" validate:"oneof=manually automate"` diff --git a/pkg/app/service.go b/pkg/app/service.go index 83451677..52a30f81 100644 --- a/pkg/app/service.go +++ b/pkg/app/service.go @@ -45,7 +45,7 @@ type AppServiceImpl struct { actionRepository repository.ActionRepository } -var type_array = [12]string{"transformer", "restapi", "graphql", "redis", "mysql", "mariadb", "postgresql", "mongodb", "tidb", "elasticsearch", "s3", "smtp"} +var type_array = [13]string{"transformer", "restapi", "graphql", "redis", "mysql", "mariadb", "postgresql", "mongodb", "tidb", "elasticsearch", "s3", "smtp", "supabasedb"} type AppDto struct { ID int `json:"appId"` // generated by database primary key serial diff --git a/pkg/resource/factory.go b/pkg/resource/factory.go index 855b205b..90a04469 100644 --- a/pkg/resource/factory.go +++ b/pkg/resource/factory.go @@ -37,6 +37,7 @@ var ( ELASTICSEARCH_RESOURCE = "elasticsearch" S3_RESOURCE = "s3" SMTP_RESOURCE = "smtp" + SUPABASEDB_RESOURCE = "supabasedb" ) type AbstractResourceFactory interface { @@ -55,7 +56,7 @@ func (f *Factory) Generate() common.DataConnector { case MYSQL_RESOURCE, MARIADB_RESOURCE, TIDB_RESOURCE: sqlRsc := &mysql.MySQLConnector{} return sqlRsc - case POSTGRES_RESOURCE: + case POSTGRES_RESOURCE, SUPABASEDB_RESOURCE: pgsRsc := &postgresql.Connector{} return pgsRsc case REDIS_RESOURCE: diff --git a/pkg/resource/service.go b/pkg/resource/service.go index 9fe9b4ba..1cf45ecc 100644 --- a/pkg/resource/service.go +++ b/pkg/resource/service.go @@ -23,7 +23,7 @@ import ( "go.uber.org/zap" ) -var type_array = [11]string{"restapi", "graphql", "redis", "mysql", "mariadb", "postgresql", "mongodb", "tidb", "elasticsearch", "s3", "smtp"} +var type_array = [12]string{"restapi", "graphql", "redis", "mysql", "mariadb", "postgresql", "mongodb", "tidb", "elasticsearch", "s3", "smtp", "supabasedb"} var type_map = map[string]int{ "restapi": 1, "graphql": 2, @@ -36,6 +36,7 @@ var type_map = map[string]int{ "elasticsearch": 9, "s3": 10, "smtp": 11, + "supabasedb": 12, } type ResourceService interface { @@ -52,7 +53,7 @@ type ResourceService interface { type ResourceDto struct { ID int `json:"resourceId"` Name string `json:"resourceName" validate:"required"` - Type string `json:"resourceType" validate:"oneof=restapi graphql redis mysql mariadb postgresql mongodb tidb elasticsearch s3 smtp"` + Type string `json:"resourceType" validate:"oneof=restapi graphql redis mysql mariadb postgresql mongodb tidb elasticsearch s3 smtp supabasedb"` Options map[string]interface{} `json:"content" validate:"required"` CreatedAt time.Time `json:"createdAt,omitempty"` CreatedBy int `json:"createdBy,omitempty"` From b9db275f0f12626dbf081700c7f0607524f09b53 Mon Sep 17 00:00:00 2001 From: naj1n Date: Fri, 2 Dec 2022 14:54:49 +0800 Subject: [PATCH 3/3] enhance!: remove verification code in self-host --- api/resthandler/user.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/api/resthandler/user.go b/api/resthandler/user.go index d9f45cc9..321465f6 100644 --- a/api/resthandler/user.go +++ b/api/resthandler/user.go @@ -18,6 +18,7 @@ package resthandler import ( "encoding/json" "net/http" + "os" "time" "github.com/illa-family/builder-backend/pkg/user" @@ -52,8 +53,8 @@ type SignUpRequest struct { Password string `json:"password" validate:"required"` Language string `json:"language" validate:"oneof=zh-CN en-US"` IsSubscribed bool `json:"isSubscribed"` - VerificationCode string `json:"verificationCode" validate:"required"` - VerificationToken string `json:"verificationToken" validate:"required"` + VerificationCode string `json:"verificationCode"` + VerificationToken string `json:"verificationToken"` } type SignInRequest struct { @@ -156,14 +157,16 @@ func (impl UserRestHandlerImpl) SignUp(c *gin.Context) { } // validate verification code - validCode, err := impl.userService.ValidateVerificationCode(payload.VerificationCode, payload.VerificationToken, - payload.Email, "signup") - if err != nil || !validCode { - c.JSON(http.StatusBadRequest, gin.H{ - "errorCode": 400, - "errorMessage": "validate verification code error: " + err.Error(), - }) - return + if os.Getenv("ILLA_DEPLOY_MODE") != "self-host" { + validCode, err := impl.userService.ValidateVerificationCode(payload.VerificationCode, payload.VerificationToken, + payload.Email, "signup") + if err != nil || !validCode { + c.JSON(http.StatusBadRequest, gin.H{ + "errorCode": 400, + "errorMessage": "validate verification code error: " + err.Error(), + }) + return + } } // create user