Started a repository of the uploads

This commit is contained in:
Leon Mika 2026-03-02 21:10:09 +11:00
parent 6b697e008f
commit 0a9af9cde8
11 changed files with 101 additions and 15 deletions

View file

@ -95,12 +95,36 @@ func (s *Service) FinalizePending(ctx context.Context, pendingGUID string, expec
return errors.New("invalid pending upload")
}
pendingDataFilename := filepath.Join(s.pendingDir, pu.GUID+".upload")
if err := s.verifyPendingUpload(pendingDataFilename, expectedHash); err != nil {
return err
}
newUpload := models.Upload{
SiteID: site.ID,
GUID: models.NewNanoID(),
FileSize: pu.FileSize,
MIMEType: pu.MIMEType,
Filename: pu.Filename,
CreatedAt: time.Now().UTC(),
}
if err := s.db.SaveUpload(ctx, &newUpload); err != nil {
return err
}
if err := s.up.AdoptFile(site, newUpload, pendingDataFilename); err != nil {
return err
}
return nil
}
func (s *Service) verifyPendingUpload(pendingDataFilename string, expectedHash string) error {
expectedHashBytes, err := hex.DecodeString(expectedHash)
if err != nil {
return err
}
pendingDataFilename := filepath.Join(s.pendingDir, pu.GUID+".upload")
if _, err := os.Stat(pendingDataFilename); err != nil {
return err
}

View file

@ -5,16 +5,19 @@ import (
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/providers/db"
"lmika.dev/lmika/weiro/providers/uploadfiles"
)
type Service struct {
db *db.Provider
up *uploadfiles.Provider
pendingDir string
}
func New(db *db.Provider, pendingDir string) *Service {
func New(db *db.Provider, up *uploadfiles.Provider, pendingDir string) *Service {
return &Service{
db: db,
up: up,
pendingDir: pendingDir,
}
}