package service import ( "orbits-server/internal/server/api/assets" "orbits-server/internal/server/database" "orbits-server/internal/shared/security" "time" "gorm.io/gorm" ) const ( accessKeyLen = 32 ) type KeyService struct { db *gorm.DB } func NewKeyService(db *gorm.DB) *KeyService { return &KeyService{ db: db, } } func (s *KeyService) Create(name string, expiresAt time.Time) (assets.KeyResponse, error) { keyContent := security.GenerateChars(accessKeyLen) hash, err := security.HashKey(keyContent) if err != nil { return assets.KeyResponse{}, err } keyRecord := database.BuildKeyRecord(hash, name, expiresAt) if err := database.CreateKey(s.db, &keyRecord); err != nil { return assets.KeyResponse{}, err } keyResponse := assets.KeyResponse{ ID: keyRecord.ID, MetaName: keyRecord.MetaName, KeyName: keyRecord.KeyName, KeyContent: keyContent, CreatedAt: keyRecord.CreatedAt, UpdatedAt: keyRecord.UpdatedAt, ExpiresAt: keyRecord.ExpiresAt, } return keyResponse, nil } func (s *KeyService) DeleteByName(name string) { }