weiro/providers/db/uploads.go

112 lines
2.8 KiB
Go
Raw Normal View History

2026-03-02 09:48:41 +00:00
package db
import (
"context"
"time"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/providers/db/gen/sqlgen"
)
func (db *Provider) SelectUploadByID(ctx context.Context, id int64) (models.Upload, error) {
row, err := db.queries.SelectUploadByID(ctx, id)
if err != nil {
return models.Upload{}, err
}
return dbUploadToUpload(row), nil
}
func (db *Provider) SelectUploadsOfSite(ctx context.Context, siteID int64) ([]models.Upload, error) {
rows, err := db.queries.SelectUploadsOfSite(ctx, siteID)
if err != nil {
return nil, err
}
uploads := make([]models.Upload, len(rows))
for i, row := range rows {
uploads[i] = dbUploadToUpload(row)
}
return uploads, nil
}
func (db *Provider) SaveUpload(ctx context.Context, upload *models.Upload) error {
if upload.ID == 0 {
if err := db.queries.InsertUpload(ctx, sqlgen.InsertUploadParams{
SiteID: upload.SiteID,
Guid: upload.GUID,
MimeType: upload.MIMEType,
Filename: upload.Filename,
2026-03-02 10:10:09 +00:00
CreatedAt: upload.CreatedAt.Unix(),
2026-03-02 09:48:41 +00:00
Alt: upload.Alt,
}); err != nil {
return err
}
return nil
}
return db.queries.UpdateUpload(ctx, sqlgen.UpdateUploadParams{
Alt: upload.Alt,
ID: upload.ID,
})
}
func (db *Provider) DeleteUpload(ctx context.Context, id int64) error {
return db.queries.DeleteUpload(ctx, id)
}
func (db *Provider) SelectPendingUploadByGUID(ctx context.Context, guid string) (models.PendingUpload, error) {
row, err := db.queries.SelectPendingUploadByGUID(ctx, guid)
if err != nil {
return models.PendingUpload{}, err
}
return dbPendingUploadToPendingUpload(row), nil
}
func (db *Provider) SavePendingUpload(ctx context.Context, pending *models.PendingUpload) error {
_, err := db.queries.InsertPendingUpload(ctx, sqlgen.InsertPendingUploadParams{
SiteID: pending.SiteID,
Guid: pending.GUID,
UserID: pending.UserID,
Filename: pending.Filename,
FileSize: pending.FileSize,
MimeType: pending.MIMEType,
UploadStartedAt: pending.UploadStarted.Unix(),
})
return err
}
2026-03-02 10:10:09 +00:00
func (db *Provider) DeletePendingUpload(ctx context.Context, guid string) error {
return db.queries.DeletePendingUpload(ctx, guid)
}
2026-03-02 09:48:41 +00:00
func dbUploadToUpload(row sqlgen.Upload) models.Upload {
var id int64
if idVal, ok := row.ID.(int64); ok {
id = idVal
}
return models.Upload{
ID: id,
SiteID: row.SiteID,
GUID: row.Guid,
MIMEType: row.MimeType,
Filename: row.Filename,
Alt: row.Alt,
2026-03-02 10:10:09 +00:00
CreatedAt: time.Unix(row.CreatedAt, 0).UTC(),
2026-03-02 09:48:41 +00:00
}
}
func dbPendingUploadToPendingUpload(row sqlgen.PendingUpload) models.PendingUpload {
return models.PendingUpload{
GUID: row.Guid,
SiteID: row.SiteID,
UserID: row.UserID,
FileSize: row.FileSize,
Filename: row.Filename,
MIMEType: row.MimeType,
UploadStarted: time.Unix(row.UploadStartedAt, 0),
}
}