45 lines
837 B
Go
45 lines
837 B
Go
package service
|
|
|
|
import (
|
|
"code.icod.de/auth/accountserver/configuration"
|
|
"code.icod.de/auth/accountserver/ent"
|
|
"context"
|
|
"database/sql"
|
|
"entgo.io/ent/dialect"
|
|
entsql "entgo.io/ent/dialect/sql"
|
|
"log"
|
|
)
|
|
|
|
type Service struct {
|
|
client *ent.Client
|
|
}
|
|
|
|
func NewService() *Service {
|
|
s := new(Service)
|
|
return s
|
|
}
|
|
|
|
func (s *Service) Connect() {
|
|
s.client = open(configuration.GetDatabaseConnectionString())
|
|
}
|
|
|
|
func (s *Service) Close() error {
|
|
return s.client.Close()
|
|
}
|
|
|
|
func (s *Service) CreateSchema() error {
|
|
return s.client.Schema.Create(context.Background())
|
|
}
|
|
|
|
// open new connection
|
|
func open(databaseUrl string) *ent.Client {
|
|
db, err := sql.Open("pgx", databaseUrl)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Create an ent.Driver from `db`.
|
|
drv := entsql.OpenDB(dialect.Postgres, db)
|
|
return ent.NewClient(ent.Driver(drv))
|
|
}
|