connect, createschema, close

This commit is contained in:
Darko Luketic 2024-08-19 14:15:44 +02:00
parent 6943eb83f4
commit fd8fdc899c
6 changed files with 93 additions and 0 deletions

34
cmd/migrate.go Normal file
View File

@ -0,0 +1,34 @@
package cmd
import (
"code.icod.de/auth/accountserver/service"
"github.com/spf13/cobra"
)
// migrateCmd represents the migrate command
var migrateCmd = &cobra.Command{
Use: "migrate",
Short: "Create Schema",
RunE: func(cmd *cobra.Command, args []string) error {
s := service.NewService()
s.Connect()
if e := s.CreateSchema(); e != nil {
return e
}
return s.Close()
},
}
func init() {
rootCmd.AddCommand(migrateCmd)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// migrateCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// migrateCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

View File

@ -19,6 +19,8 @@ func init() {
// Here you will define your flags and configuration settings. // Here you will define your flags and configuration settings.
serveCmd.Flags().BoolVar(&configuration.Debug, "debug", false, "enable debug mode")
serveCmd.Flags().BoolVar(&configuration.RunHTTP, "http", true, "Run http server") serveCmd.Flags().BoolVar(&configuration.RunHTTP, "http", true, "Run http server")
serveCmd.Flags().BoolVar(&configuration.RunGRPC, "grpc", true, "Run grpc server") serveCmd.Flags().BoolVar(&configuration.RunGRPC, "grpc", true, "Run grpc server")

View File

@ -1,6 +1,7 @@
package configuration package configuration
var ( var (
Debug = false
RunHTTP = true RunHTTP = true
RunGRPC = true RunGRPC = true
) )

14
configuration/database.go Normal file
View File

@ -0,0 +1,14 @@
package configuration
import "fmt"
var (
DATABASE_HOST = "localhost:5432"
DATABASE_NAME = "postgres"
DATABASE_USER = "postgres"
DATABASE_PASS = "postgres"
)
func GetDatabaseConnectionString() string {
return fmt.Sprintf("postgresql://%s:%s@%s/%s?sslmode=disable", DATABASE_USER, DATABASE_PASS, DATABASE_HOST, DATABASE_NAME)
}

View File

@ -1 +1,8 @@
package service package service
type CreateAccountInput struct{}
// CreateAccount creates an account, returns nil if successful or error if not
func (s *Service) CreateAccount(in *CreateAccountInput) error {
panic("implement me")
}

View File

@ -1,9 +1,44 @@
package service 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 { type Service struct {
client *ent.Client
} }
func NewService() *Service { func NewService() *Service {
s := new(Service) s := new(Service)
return s 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))
}