package db import ( "log/slog" "golang.org/x/crypto/bcrypt" "github.com/google/uuid" "gorm.io/gorm" ) func SeedAdminKey(db *gorm.DB, adminToken string) error { var count int64 db.Model(&ApiKey{}).Count(&count) if count > 0 { slog.Info("admin key already exists, skipping seed") return nil } hash, err := bcrypt.GenerateFromPassword([]byte(adminToken), bcrypt.DefaultCost) if err != nil { return err } admin := ApiKey{ ID: uuid.New(), Name: "admin", KeyHash: string(hash), KeyPrefix: "admin-", Scopes: StringArray{"chat", "models", "usage", "admin"}, IsActive: true, IsAdmin: true, } if err := db.Create(&admin).Error; err != nil { return err } slog.Info("admin key seeded", "prefix", admin.KeyPrefix) slog.Warn("ADMIN TOKEN: " + adminToken + " (save this!)") return nil }