86 lines
1.8 KiB
Go
86 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"gitea.pena/PenaSide/common/validate"
|
|
dalBS "gitea.pena/SQuiz/answerer/internal/dal"
|
|
"gitea.pena/SQuiz/answerer/internal/initialize"
|
|
"gitea.pena/SQuiz/common/dal"
|
|
"github.com/caarlos0/env/v8"
|
|
"log"
|
|
)
|
|
|
|
func main() {
|
|
cfg, err := loadConfig()
|
|
if err != nil {
|
|
log.Fatalf("error loading config: %v", err)
|
|
}
|
|
|
|
err = validateNotEmpty(cfg)
|
|
if err != nil {
|
|
log.Fatalf("error validating config: %v", err)
|
|
}
|
|
|
|
err = validate.ValidateEncryptKeys(&cfg.ExternalCfg.EncryptCommon)
|
|
if err != nil {
|
|
log.Fatalf("error validating EncryptKeys: %v", err)
|
|
}
|
|
|
|
err = validate.ValidateS3(validate.ValidateS3Deps{
|
|
S3Endpoint: cfg.S3Endpoint,
|
|
S3SecretKey: cfg.S3SecretKey,
|
|
S3AccessKey: cfg.S3AccessKey,
|
|
IsProd: cfg.IsProd,
|
|
BucketName: dalBS.Bucket,
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("error validating S3: %v", err)
|
|
}
|
|
|
|
_, err = dal.New(context.TODO(), cfg.PostgresURL, nil)
|
|
if err != nil {
|
|
log.Fatalf("error connecting to postgres: %v", err)
|
|
}
|
|
|
|
err = validate.ValidateRedis(cfg.RedisHost, cfg.RedisPassword, int(cfg.RedisDB))
|
|
if err != nil {
|
|
log.Fatalf("error validating Redis: %v", err)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func loadConfig() (initialize.Config, error) {
|
|
var cfg initialize.Config
|
|
|
|
if err := env.Parse(&cfg); err != nil {
|
|
return cfg, err
|
|
}
|
|
return cfg, nil
|
|
}
|
|
|
|
func validateNotEmpty(cfg initialize.Config) error {
|
|
if cfg.ClientHttpURL == "" {
|
|
return errors.New("client http url cannot be empty")
|
|
}
|
|
|
|
if cfg.RedirectURL == "" {
|
|
return errors.New("redirect url cannot be empty")
|
|
}
|
|
|
|
if cfg.TrashLogHost == "" {
|
|
return errors.New("trash log host cannot be empty")
|
|
}
|
|
|
|
if cfg.ExternalCfg.EncryptCommon.PrivKey == "" {
|
|
return errors.New("private key cannot be empty")
|
|
}
|
|
|
|
if cfg.ExternalCfg.EncryptCommon.PubKey == "" {
|
|
return errors.New("public key cannot be empty")
|
|
}
|
|
|
|
return nil
|
|
}
|