gis/app/init.go

45 lines
705 B
Go

package app
import (
"context"
"log"
"github.com/go-playground/validator/v10"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/minio/minio-go/v7"
)
type App struct {
Ctx context.Context
Cfg *Config
Db *pgxpool.Pool
S3 *minio.Client
Validator *validator.Validate
}
func NewApp(ctx context.Context) *App {
cfg, err := loadConfig()
if err != nil {
log.Fatal(err)
}
db, err := newDB(ctx, cfg)
if err != nil {
log.Fatal(err)
}
s3, err := newS3Client(ctx, cfg)
if err != nil {
log.Fatal(err)
}
return &App{
Ctx: ctx,
Cfg: cfg,
Db: db.pool,
S3: s3,
Validator: validator.New(validator.WithRequiredStructEnabled()),
}
}