| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package main
- import (
- "context"
- "flag"
- "fmt"
- "log"
- "time"
- _ "github.com/Wei-Shaw/sub2api/ent/runtime"
- "github.com/Wei-Shaw/sub2api/internal/config"
- "github.com/Wei-Shaw/sub2api/internal/repository"
- "github.com/Wei-Shaw/sub2api/internal/service"
- )
- func main() {
- email := flag.String("email", "", "Admin email to issue a JWT for (defaults to first active admin)")
- flag.Parse()
- cfg, err := config.LoadForBootstrap()
- if err != nil {
- log.Fatalf("failed to load config: %v", err)
- }
- client, sqlDB, err := repository.InitEnt(cfg)
- if err != nil {
- log.Fatalf("failed to init db: %v", err)
- }
- defer func() {
- if err := client.Close(); err != nil {
- log.Printf("failed to close db: %v", err)
- }
- }()
- userRepo := repository.NewUserRepository(client, sqlDB)
- authService := service.NewAuthService(client, userRepo, nil, nil, cfg, nil, nil, nil, nil, nil, nil, nil, nil)
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- var user *service.User
- if *email != "" {
- user, err = userRepo.GetByEmail(ctx, *email)
- } else {
- user, err = userRepo.GetFirstAdmin(ctx)
- }
- if err != nil {
- log.Fatalf("failed to resolve admin user: %v", err)
- }
- token, err := authService.GenerateToken(ctx, user)
- if err != nil {
- log.Fatalf("failed to generate token: %v", err)
- }
- fmt.Printf("ADMIN_EMAIL=%s\nADMIN_USER_ID=%d\nJWT=%s\n", user.Email, user.ID, token)
- }
|