feat: initial commit - kratos admin service
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"kra/internal/conf"
|
||||
"kra/internal/data/ent"
|
||||
"kra/internal/data/ent/migrate"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/google/wire"
|
||||
)
|
||||
|
||||
// ProviderSet is data providers.
|
||||
var ProviderSet = wire.NewSet(NewData, NewAdminRepo)
|
||||
|
||||
// Data is a struct that contains the database client.
|
||||
type Data struct {
|
||||
db *ent.Client
|
||||
}
|
||||
|
||||
// NewData creates a new Data instance.
|
||||
func NewData(c *conf.Data) (*Data, func(), error) {
|
||||
db, err := ent.Open(c.Database.Driver, c.Database.Source)
|
||||
if err != nil {
|
||||
log.Fatalf("failed opening connection to database: %v", err)
|
||||
}
|
||||
if os.Getenv("DEPLOY_ENV") == "dev" {
|
||||
// Enable debug mode for detailed logging.
|
||||
db = db.Debug()
|
||||
// Run the auto migration tool.
|
||||
if err = db.Schema.Create(context.Background(), migrate.WithDropIndex(true)); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
cleanup := func() {
|
||||
db.Close()
|
||||
}
|
||||
return &Data{
|
||||
db: db,
|
||||
}, cleanup, nil
|
||||
}
|
||||
Reference in New Issue
Block a user