45 lines
705 B
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()),
|
|
}
|
|
}
|