-
Notifications
You must be signed in to change notification settings - Fork 7
/
media.go
96 lines (78 loc) · 2.63 KB
/
media.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package model
import (
"github.com/puti-projects/puti/internal/utils"
"gorm.io/gorm"
)
// MediaModel the definition of media model
type Media struct {
Model
UserID uint64 `gorm:"column:upload_user_id;not null"`
Title string `gorm:"column:title;not null"`
Slug string `gorm:"column:slug;not null"`
Description string `gorm:"column:description;not null"`
GUID string `gorm:"column:guid;not null"`
Type string `gorm:"column:type;not null;default:picture"`
MimeType string `gorm:"column:mime_type;not null"`
Usage string `gorm:"column:usage;not null"`
Status uint64 `gorm:"column:status;not null;default:1"`
}
// ResourceTypePicture resource type of picture
const ResourceTypePicture = "picture"
// StatusNormal normal status value
const StatusNormal = 1
// UsageDefault default usage
const UsageDefault = "common"
// UsageCover usage for cover
const UsageCover = "cover"
// TableName is the resource table name in db
func (m *Media) TableName() string {
return "pt_resource"
}
// BeforeCreate set values before create
// Set file type by mime-type
func (m *Media) BeforeCreate(tx *gorm.DB) (err error) {
m.Type = utils.GetFileType(m.MimeType)
return
}
// Create save the new media file info
func (m *Media) Create(db *gorm.DB) error {
return db.Create(m).Error
}
// Update update media info
func (m *Media) Update(db *gorm.DB) (err error) {
return db.Save(m).Error
}
// GetByID get media info by ID
func (m *Media) GetByID(db *gorm.DB) error {
return db.Where("`status` = 1 AND `deleted_time` is null AND `id` = ?", m.ID).First(m).Error
}
// Delete delete the media info by id (not file right now)
func (m *Media) Delete(db *gorm.DB) error {
return db.Delete(m).Error
}
// Count count media in condition
func (m *Media) Count(db *gorm.DB, where string, whereArgs []interface{}) (count int64, err error) {
if whereArgs != nil {
err = db.Model(m).Where(where, whereArgs...).Count(&count).Error
return
}
err = db.Model(m).Where(where).Count(&count).Error
return
}
// List get media list
func (m *Media) List(db *gorm.DB, where string, whereArgs []interface{}, offset, limit int) (medias []*Media, err error) {
medias = make([]*Media, 0)
if whereArgs != nil {
err = db.Where(where, whereArgs...).Offset(offset).Limit(limit).Order("created_time DESC").Find(&medias).Error
return
}
err = db.Where(where).Offset(offset).Limit(limit).Order("created_time DESC").Find(&medias).Error
return medias, err
}
// TotalNumber get total number of media
func (m *Media) TotalNumber(db *gorm.DB) (totalMedia int64, err error) {
err = db.Model(m).
Where("`deleted_time` is null").
Count(&totalMedia).Error
return
}