48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
//go:build mysql
|
|
// +build mysql
|
|
|
|
package mysql
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/tinode/chat/server/store"
|
|
t "github.com/tinode/chat/server/store/types"
|
|
)
|
|
|
|
type fileReviewExecContext interface {
|
|
ExecContext(context.Context, string, ...any) (sql.Result, error)
|
|
}
|
|
|
|
func insertFileReviewTasks(ctx context.Context, exec fileReviewExecContext, fd *t.FileDef) error {
|
|
fileID := decodeUID(fd.Uid())
|
|
userID := int64(0)
|
|
if fd.User != "" {
|
|
userID = decodeUID(t.ParseUid(fd.User))
|
|
}
|
|
tasks := []struct {
|
|
taskType string
|
|
provider string
|
|
}{
|
|
{taskType: t.FileReviewTaskTypeContent, provider: t.FileReviewProviderAliyunGreen},
|
|
{taskType: t.FileReviewTaskTypeMalware, provider: t.FileReviewProviderAliyunSAS},
|
|
}
|
|
for _, task := range tasks {
|
|
id, err := nextSnowflakeID()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
taskID := store.EncodeUid(id).String()
|
|
_, err = exec.ExecContext(ctx, `INSERT IGNORE INTO im_file_review_tasks
|
|
(id,task_id,file_id,user_id,task_type,provider,storage_provider,object_name,mime_type,file_size,status,created_at,updated_at)
|
|
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)`,
|
|
id, taskID, fileID, userID, task.taskType, task.provider, "", fd.Location, fd.MimeType, fd.Size,
|
|
t.FileReviewStatusPending, fd.UpdatedAt, fd.UpdatedAt)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|