chore: baseline snapshot before moderation-strictness feature
Repo .git was damaged (refs/ missing, index truncated, object store near-empty). Repaired via git init (rebuilt refs), stale index preserved as .git/index.corrupt-20260910.bak, then full worktree committed as a rollback baseline.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var MessageImages MessageImageStore
|
||||
|
||||
type MessageImageStore interface {
|
||||
Create(ctx context.Context, opts CreateMessageImageOptions) (*MessageImage, error)
|
||||
GetByMessageIDs(ctx context.Context, messageIDs []uint) (map[uint][]*MessageImage, error)
|
||||
}
|
||||
|
||||
func NewMessageImageStore(db *gorm.DB) MessageImageStore {
|
||||
return &messageImages{db}
|
||||
}
|
||||
|
||||
type messageImages struct {
|
||||
*gorm.DB
|
||||
}
|
||||
|
||||
type MessageImage struct {
|
||||
gorm.Model
|
||||
MessageID uint `gorm:"index" json:"message_id"`
|
||||
URL string `gorm:"size:500" json:"url"`
|
||||
FileName string `gorm:"size:200" json:"file_name"`
|
||||
FileSize int64 `json:"file_size"`
|
||||
}
|
||||
|
||||
type CreateMessageImageOptions struct {
|
||||
MessageID uint
|
||||
URL string
|
||||
FileName string
|
||||
FileSize int64
|
||||
}
|
||||
|
||||
func (db *messageImages) Create(ctx context.Context, opts CreateMessageImageOptions) (*MessageImage, error) {
|
||||
img := &MessageImage{
|
||||
MessageID: opts.MessageID,
|
||||
URL: opts.URL,
|
||||
FileName: opts.FileName,
|
||||
FileSize: opts.FileSize,
|
||||
}
|
||||
if err := db.WithContext(ctx).Create(img).Error; err != nil {
|
||||
return nil, errors.Wrap(err, "create message image")
|
||||
}
|
||||
return img, nil
|
||||
}
|
||||
|
||||
func (db *messageImages) GetByMessageIDs(ctx context.Context, messageIDs []uint) (map[uint][]*MessageImage, error) {
|
||||
var images []*MessageImage
|
||||
if err := db.WithContext(ctx).Where("message_id IN ?", messageIDs).Find(&images).Error; err != nil {
|
||||
return nil, errors.Wrap(err, "get message images")
|
||||
}
|
||||
result := make(map[uint][]*MessageImage)
|
||||
for _, img := range images {
|
||||
result[img.MessageID] = append(result[img.MessageID], img)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user