108 lines
2.7 KiB
Go
108 lines
2.7 KiB
Go
|
|
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,
|
||
|
|
CreatedAt: upload.CreatedAt,
|
||
|
|
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
|
||
|
|
}
|
||
|
|
|
||
|
|
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,
|
||
|
|
CreatedAt: row.CreatedAt,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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),
|
||
|
|
}
|
||
|
|
}
|