farmstar-survey-backend/cmd/farmstar/main.go
2024-02-05 16:05:28 +03:00

75 lines
1.8 KiB
Go

package main
import (
"flag"
"log/slog"
"os"
"github.com/grassrootseconomics/farmstar-survey-backend/internal/hooks"
"github.com/grassrootseconomics/farmstar-survey-backend/internal/router"
_ "github.com/grassrootseconomics/farmstar-survey-backend/migrations"
"github.com/grassrootseconomics/farmstar-survey-backend/pkg/custodial"
"github.com/grassrootseconomics/farmstar-survey-backend/pkg/telegram"
"github.com/grassrootseconomics/farmstar-survey-backend/pkg/ussd"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/kamikazechaser/africastalking"
"github.com/knadh/koanf/v2"
"github.com/pocketbase/pocketbase"
)
var (
confFlag string
lo *slog.Logger
ko *koanf.Koanf
pocketbaseApp *pocketbase.PocketBase
postgresPool *pgxpool.Pool
ussdClient *ussd.USSDClient
custodialClient *custodial.CustodialClient
tgClient *telegram.TelegramClient
atClient *africastalking.AtClient
)
func init() {
flag.StringVar(&confFlag, "config", "config.toml", "Config file location")
flag.Parse()
lo = initLogger()
ko = initConfig()
}
func main() {
pocketbaseApp = initPocketbase()
postgresPool = initPostgres()
ussdClient = initUSSDClient()
custodialClient = initCustodialClient()
tgClient = initTelegramClient()
atClient = initATClient()
worker := initRiverQueueWWorker()
if err := worker.Start(); err != nil {
lo.Error("could not start worker", err)
os.Exit(1)
}
hooks := hooks.NewHooks(hooks.Opts{
PB: pocketbaseApp,
Worker: worker,
RedemptionVault: ko.MustString("rewards.number"),
})
hooks.Bootsrap()
router := router.NewRouter(router.Opts{
PB: pocketbaseApp,
USSDClient: ussdClient,
})
router.Bootsrap()
if err := pocketbaseApp.Start(); err != nil {
lo.Error("could not start pocketbase ", err)
os.Exit(1)
}
}