mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 12:17:24 +00:00
Initial commit
This commit is contained in:
56
server/dao/image.go
Normal file
56
server/dao/image.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"nysoure/server/model"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func CreateImage(name string, width, height int) (model.Image, error) {
|
||||
// Create a new image in the database
|
||||
i := model.Image{FileName: name, Width: width, Height: height}
|
||||
if err := db.Create(&i).Error; err != nil {
|
||||
return model.Image{}, err
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
||||
func GetImageByID(id uint) (model.Image, error) {
|
||||
// Retrieve an image by its ID from the database
|
||||
var i model.Image
|
||||
if err := db.First(&i, id).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return model.Image{}, model.NewNotFoundError("Image not found")
|
||||
}
|
||||
return model.Image{}, err
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
||||
func DeleteImage(id uint) error {
|
||||
// Delete an image from the database
|
||||
i := model.Image{}
|
||||
i.ID = id
|
||||
if err := db.Delete(&i).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetUnusedImages() ([]model.Image, error) {
|
||||
// Retrieve all images that are not used in any post
|
||||
var images []model.Image
|
||||
oneDayAgo := time.Now().Add(-24 * time.Hour)
|
||||
if err := db.
|
||||
Where("NOT EXISTS (SELECT 1 FROM resource_images WHERE image_id = images.id)").
|
||||
Where("created_at < ?", oneDayAgo).
|
||||
Find(&images).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return images, nil
|
||||
}
|
Reference in New Issue
Block a user