feat: add services and separate further

This commit is contained in:
2026-04-29 13:25:38 +02:00
parent 6c28aea655
commit 8f6b1efea0
16 changed files with 318 additions and 168 deletions
+21
View File
@@ -0,0 +1,21 @@
package service
import (
"orbits-server/internal/server/database"
"gorm.io/gorm"
)
type CtlService struct {
db *gorm.DB
}
func NewControlService(db *gorm.DB) *CtlService {
return &CtlService{
db: db,
}
}
func (s *CtlService) ListLatestCommand() (database.Command, error) {
return database.LatestCommand(s.db)
}
+74
View File
@@ -0,0 +1,74 @@
package service
import (
"io"
"orbits-server/internal/server/api/assets"
"orbits-server/internal/server/bootstrap"
"orbits-server/internal/server/database"
"os"
"gorm.io/gorm"
)
type FileService struct {
db *gorm.DB
env bootstrap.Environment
}
func NewFileService(db *gorm.DB, env bootstrap.Environment) *FileService {
return &FileService{db: db, env: env}
}
func (s *FileService) ListFiles() ([]assets.FileResponse, error) {
files, err := database.ListFiles(s.db)
if err != nil {
return nil, err
}
resp := make([]assets.FileResponse, 0, len(files))
for _, f := range files {
resp = append(resp, assets.FileResponse{
ID: f.ID,
MetaName: f.MetaName,
FileName: f.FileName,
MediaType: string(f.MediaType),
CreatedAt: f.CreatedAt,
ExpiresAt: f.ExpiresAt,
})
}
return resp, nil
}
func (s *FileService) Create(r io.Reader, filename string) (database.File, error) {
fileRecord, err := database.BuildFileRecord(r, filename, s.env.ContentDirectory)
if err != nil {
return database.File{}, err
}
if err := database.CreateFile(s.db, &fileRecord); err != nil {
return database.File{}, err
}
return fileRecord, nil
}
func (s *FileService) DeleteByName(filename string) (database.File, error) {
fileRecord, err := database.FindFileByName(s.db, filename)
if err != nil {
return database.File{}, err
}
_ = os.Remove(fileRecord.FilePath)
if err := database.DeleteFileByID(s.db, fileRecord.ID); err != nil {
return database.File{}, err
}
return fileRecord, nil
}
func (s *FileService) DeleteByID(id int) {
_ = database.DeleteFileByID(s.db, id)
}
+55
View File
@@ -0,0 +1,55 @@
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) {
}