package seed import ( "context" "log" "booklib/internal/auth" "booklib/internal/store" ) func Admin(ctx context.Context, s *store.Store, user, pass string) error { if user == "" || pass == "" { return nil } if len(pass) < 8 { // 与 API 建户口令下限一致 log.Printf("seed admin skipped: ADMIN_PASSWORD must be >= 8 chars") return nil } n, err := s.CountUsers(ctx) if err != nil || n > 0 { return err } h, err := auth.HashPassword(pass) if err != nil { return err } if _, err := s.CreateUser(ctx, user, h, "admin"); err != nil { if store.IsUniqueViolation(err) { log.Printf("seed admin %q may already exist: %v", user, err) return nil } return err } log.Printf("seeded initial admin user %q", user) return nil }