diff --git a/cmd/init/main.go b/cmd/init/main.go index 53809c6e..13bae912 100644 --- a/cmd/init/main.go +++ b/cmd/init/main.go @@ -10,13 +10,6 @@ import ( "time" "github.com/gofrs/uuid" - "github.com/instill-ai/mgmt-backend/config" - "github.com/instill-ai/mgmt-backend/pkg/acl" - "github.com/instill-ai/mgmt-backend/pkg/constant" - "github.com/instill-ai/mgmt-backend/pkg/datamodel" - "github.com/instill-ai/mgmt-backend/pkg/logger" - "github.com/instill-ai/mgmt-backend/pkg/repository" - "github.com/instill-ai/mgmt-backend/pkg/service" "github.com/redis/go-redis/v9" "go.opentelemetry.io/otel" "golang.org/x/crypto/bcrypt" @@ -24,11 +17,20 @@ import ( "google.golang.org/grpc/status" "gorm.io/gorm" - grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap" + grpczap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap" openfga "github.com/openfga/go-sdk/client" + "github.com/instill-ai/mgmt-backend/cmd/init/preset" + "github.com/instill-ai/mgmt-backend/config" + "github.com/instill-ai/mgmt-backend/pkg/acl" + "github.com/instill-ai/mgmt-backend/pkg/constant" + "github.com/instill-ai/mgmt-backend/pkg/datamodel" + "github.com/instill-ai/mgmt-backend/pkg/logger" + "github.com/instill-ai/mgmt-backend/pkg/repository" + "github.com/instill-ai/mgmt-backend/pkg/service" + database "github.com/instill-ai/mgmt-backend/pkg/db" - custom_otel "github.com/instill-ai/mgmt-backend/pkg/logger/otel" + customotel "github.com/instill-ai/mgmt-backend/pkg/logger/otel" mgmtPB "github.com/instill-ai/protogen-go/core/mgmt/v1beta" ) @@ -101,34 +103,6 @@ func createDefaultUser(ctx context.Context, r repository.Repository) error { return nil } -func createPresetOrg(ctx context.Context, r repository.Repository) error { - - // In Instill Core, we provide a "preset" namespace for storing preset - // resources, such as preset pipelines. - presetOrg := &datamodel.Owner{ - Base: datamodel.Base{UID: uuid.FromStringOrNil(constant.PresetOrgUID)}, - ID: constant.PresetOrgID, - OwnerType: sql.NullString{String: service.PBUserType2DBUserType[mgmtPB.OwnerType_OWNER_TYPE_ORGANIZATION], Valid: true}, - DisplayName: sql.NullString{String: constant.PresetOrgDisplayName, Valid: true}, - } - - _, err := r.GetOrganization(context.Background(), constant.PresetOrgID, false) - if err == nil { - return nil - } - - if !errors.Is(err, gorm.ErrRecordNotFound) { - return status.Errorf(codes.Internal, "error %v", err) - } - - // Create the default preset organization - err = r.CreateOrganization(ctx, presetOrg) - if err != nil { - return err - } - return nil -} - func main() { if err := config.Init(config.ParseConfigFlag()); err != nil { log.Fatal(err.Error()) @@ -137,7 +111,7 @@ func main() { // setup tracing and metrics ctx, cancel := context.WithCancel(context.Background()) - if tp, err := custom_otel.SetupTracing(ctx, "mgmt-backend-init"); err != nil { + if tp, err := customotel.SetupTracing(ctx, "mgmt-backend-init"); err != nil { panic(err) } else { defer func() { @@ -156,7 +130,7 @@ func main() { // can't handle the error due to https://github.com/uber-go/zap/issues/880 _ = logger.Sync() }() - grpc_zap.ReplaceGrpcLoggerV2(logger) + grpczap.ReplaceGrpcLoggerV2(logger) db := database.GetConnection(&config.Config.Database) defer database.Close(db) @@ -170,8 +144,8 @@ func main() { logger.Fatal(err.Error()) } - // Create template organization - if err := createPresetOrg(ctx, r); err != nil { + // Create preset organization + if err := preset.CreatePresetOrg(ctx, r); err != nil { logger.Fatal(err.Error()) } diff --git a/cmd/init/preset/presetcreator.go b/cmd/init/preset/presetcreator.go new file mode 100644 index 00000000..97211272 --- /dev/null +++ b/cmd/init/preset/presetcreator.go @@ -0,0 +1,47 @@ +package preset + +import ( + "context" + "database/sql" + "errors" + + "github.com/gofrs/uuid" + "github.com/gogo/status" + "google.golang.org/grpc/codes" + "gorm.io/gorm" + + "github.com/instill-ai/mgmt-backend/pkg/constant" + "github.com/instill-ai/mgmt-backend/pkg/datamodel" + "github.com/instill-ai/mgmt-backend/pkg/repository" + "github.com/instill-ai/mgmt-backend/pkg/service" + + mgmtPB "github.com/instill-ai/protogen-go/core/mgmt/v1beta" +) + +func CreatePresetOrg(ctx context.Context, r repository.Repository) error { + + // In Instill Core, we provide a "preset" namespace for storing preset + // resources, such as preset pipelines. + presetOrg := &datamodel.Owner{ + Base: datamodel.Base{UID: uuid.FromStringOrNil(constant.PresetOrgUID)}, + ID: constant.PresetOrgID, + OwnerType: sql.NullString{String: service.PBUserType2DBUserType[mgmtPB.OwnerType_OWNER_TYPE_ORGANIZATION], Valid: true}, + DisplayName: sql.NullString{String: constant.PresetOrgDisplayName, Valid: true}, + } + + _, err := r.GetOrganization(context.Background(), constant.PresetOrgID, false) + if err == nil { + return nil + } + + if !errors.Is(err, gorm.ErrRecordNotFound) { + return status.Errorf(codes.Internal, "error %v", err) + } + + // Create the default preset organization + err = r.CreateOrganization(ctx, presetOrg) + if err != nil { + return err + } + return nil +} diff --git a/go.mod b/go.mod index 1dbb29a1..8a423073 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/gabriel-vasile/mimetype v1.4.3 github.com/go-redis/redismock/v9 v9.2.0 github.com/gofrs/uuid v4.4.0+incompatible + github.com/gogo/status v1.1.1 github.com/golang-migrate/migrate/v4 v4.15.2 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 @@ -68,7 +69,6 @@ require ( github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/gogo/status v1.1.1 // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/go-cmp v0.6.0 // indirect diff --git a/pkg/repository/influx.go b/pkg/repository/influx.go index 6d780656..bff5ff2e 100644 --- a/pkg/repository/influx.go +++ b/pkg/repository/influx.go @@ -144,7 +144,7 @@ func (i *influxDB) QueryPipelineTriggerTableRecords(ctx context.Context, owner s // TODO: design better filter expression to flux transpiler expr, err := i.transpileFilter(filter) if err != nil { - return nil, 0, "", status.Errorf(codes.Internal, err.Error()) + return nil, 0, "", status.Error(codes.Internal, err.Error()) } if expr != "" { @@ -320,7 +320,7 @@ func (i *influxDB) QueryPipelineTriggerChartRecords(ctx context.Context, owner s // TODO: design better filter expression to flux transpiler expr, err := i.transpileFilter(filter) if err != nil { - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Error(codes.Internal, err.Error()) } if expr != "" {