Implement s3 storage.

Use uuid as file id.
This commit is contained in:
2025-05-13 11:56:22 +08:00
parent 081b547c03
commit 04d679f3f4
14 changed files with 145 additions and 76 deletions

View File

@@ -1,6 +1,10 @@
package dao
import "nysoure/server/model"
import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"nysoure/server/model"
)
func CreateStorage(s model.Storage) (model.Storage, error) {
err := db.Model(&s).Create(&s).Error
@@ -22,3 +26,14 @@ func GetStorage(id uint) (model.Storage, error) {
err := db.Model(&model.Storage{}).Where("id = ?", id).First(&storage).Error
return storage, err
}
func AddStorageUsage(id uint, offset int64) error {
return db.Transaction(func(tx *gorm.DB) error {
var storage model.Storage
err := tx.Clauses(clause.Locking{Strength: clause.LockingStrengthUpdate}).Model(&model.Storage{}).Where("id = ?", id).First(&storage).Error
if err != nil {
return err
}
return tx.Model(&model.Storage{}).Where("id = ?", id).Update("current_size", storage.CurrentSize+offset).Error
})
}