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
+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)
}