feat: add some new features

This commit is contained in:
Rogee
2025-01-16 09:28:53 +08:00
parent dbe1e19be2
commit 7d894ab0e0
6 changed files with 132 additions and 130 deletions

View File

@@ -72,7 +72,7 @@ func (e *PostCreated) Handler(msg *message.Message) ([]*message.Message, error)
} }
// cut video // cut video
_, err = job.Insert(context.Background(), jobs.VideoCut{ _, err = job.Insert(context.Background(), jobs.PostVideoCutJob{
PostID: post.ID, PostID: post.ID,
Hash: video.Hash, Hash: video.Hash,
TenantID: post.TenantID, TenantID: post.TenantID,
@@ -83,7 +83,7 @@ func (e *PostCreated) Handler(msg *message.Message) ([]*message.Message, error)
} }
// extract audio // extract audio
_, err = job.Insert(context.Background(), jobs.VideoExtractAudio{ _, err = job.Insert(context.Background(), jobs.PostVideoExtractAudioJob{
PostID: post.ID, PostID: post.ID,
Hash: video.Hash, Hash: video.Hash,
TenantID: post.TenantID, TenantID: post.TenantID,

View File

@@ -1,52 +0,0 @@
package jobs
import (
"context"
"time"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
. "github.com/riverqueue/river"
)
var (
_ JobArgs = VideoCut{}
_ JobArgsWithInsertOpts = VideoCut{}
)
type VideoCut struct {
PostID int64 `json:"post_id"`
Hash string `json:"hash"`
TenantID int64 `json:"tenant_id"`
UserID int64 `json:"user_id"`
}
// InsertOpts implements JobArgsWithInsertOpts.
func (s VideoCut) InsertOpts() InsertOpts {
return InsertOpts{
Queue: QueueDefault,
Priority: PriorityDefault,
UniqueOpts: UniqueOpts{
ByArgs: true,
},
}
}
func (VideoCut) Kind() string {
return "VideoCut"
}
var _ Worker[VideoCut] = (*VideoCutWorker)(nil)
// @provider(job)
type VideoCutWorker struct {
WorkerDefaults[VideoCut]
}
func (w *VideoCutWorker) NextRetry(job *Job[VideoCut]) time.Time {
return time.Now().Add(5 * time.Second)
}
func (w *VideoCutWorker) Work(ctx context.Context, job *Job[VideoCut]) error {
return nil
}

View File

@@ -1,52 +0,0 @@
package jobs
import (
"context"
"time"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
. "github.com/riverqueue/river"
)
var (
_ JobArgs = VideoExtractAudio{}
_ JobArgsWithInsertOpts = VideoExtractAudio{}
)
type VideoExtractAudio struct {
PostID int64 `json:"post_id"`
Hash string `json:"hash"`
TenantID int64 `json:"tenant_id"`
UserID int64 `json:"user_id"`
}
// InsertOpts implements JobArgsWithInsertOpts.
func (s VideoExtractAudio) InsertOpts() InsertOpts {
return InsertOpts{
Queue: QueueDefault,
Priority: PriorityDefault,
UniqueOpts: UniqueOpts{
ByArgs: true,
},
}
}
func (VideoExtractAudio) Kind() string {
return "VideoExtractAudio"
}
var _ Worker[VideoExtractAudio] = (*VideoExtractAudioWorker)(nil)
// @provider(job)
type VideoExtractAudioWorker struct {
WorkerDefaults[VideoExtractAudio]
}
func (w *VideoExtractAudioWorker) NextRetry(job *Job[VideoExtractAudio]) time.Time {
return time.Now().Add(5 * time.Minute)
}
func (w *VideoExtractAudioWorker) Work(ctx context.Context, job *Job[VideoExtractAudio]) error {
return nil
}

View File

@@ -0,0 +1,54 @@
package jobs
import (
"context"
"time"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
. "github.com/riverqueue/river"
)
var (
_ JobArgs = (*PostVideoCutJob)(nil)
_ JobArgsWithInsertOpts = (*PostVideoCutJob)(nil)
)
type PostVideoCutJob struct {
PostID int64
TenantID int64
UserID int64
Hash string
}
// InsertOpts implements JobArgsWithInsertOpts.
func (s PostVideoCutJob) InsertOpts() InsertOpts {
return InsertOpts{
Queue: QueueDefault,
Priority: PriorityDefault,
// UniqueOpts: UniqueOpts{
// ByArgs: true,
// },
}
}
func (PostVideoCutJob) Kind() string {
return "PostVideoCutJob"
}
// worker
var _ Worker[PostVideoCutJob] = (*PostVideoCutJobWorker)(nil)
// @provider(job)
type PostVideoCutJobWorker struct {
WorkerDefaults[PostVideoCutJob]
}
func (w *PostVideoCutJobWorker) NextRetry(job *Job[PostVideoCutJob]) time.Time {
return time.Now().Add(5 * time.Second)
}
func (w *PostVideoCutJobWorker) Work(ctx context.Context, job *Job[PostVideoCutJob]) error {
return nil
}

View File

@@ -0,0 +1,52 @@
package jobs
import (
"context"
"time"
_ "git.ipao.vip/rogeecn/atom"
_ "git.ipao.vip/rogeecn/atom/contracts"
. "github.com/riverqueue/river"
)
var (
_ JobArgs = (*PostVideoExtractAudioJob)(nil)
_ JobArgsWithInsertOpts = (*PostVideoExtractAudioJob)(nil)
)
type PostVideoExtractAudioJob struct {
PostID int64
TenantID int64
UserID int64
Hash string
}
// InsertOpts implements JobArgsWithInsertOpts.
func (s PostVideoExtractAudioJob) InsertOpts() InsertOpts {
return InsertOpts{
Queue: QueueDefault,
Priority: PriorityDefault,
// UniqueOpts: UniqueOpts{
// ByArgs: true,
// },
}
}
func (PostVideoExtractAudioJob) Kind() string {
return "PostVideoExtractAudioJob"
}
var _ Worker[PostVideoExtractAudioJob] = (*PostVideoExtractAudioJobWorker)(nil)
// @provider(job)
type PostVideoExtractAudioJobWorker struct {
WorkerDefaults[PostVideoExtractAudioJob]
}
func (w *PostVideoExtractAudioJobWorker) NextRetry(job *Job[PostVideoExtractAudioJob]) time.Time {
return time.Now().Add(5 * time.Second)
}
func (w *PostVideoExtractAudioJobWorker) Work(ctx context.Context, job *Job[PostVideoExtractAudioJob]) error {
return nil
}

View File

@@ -11,30 +11,6 @@ import (
) )
func Provide(opts ...opt.Option) error { func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func(
__job *job.Job,
) (contracts.Initial, error) {
obj := &VideoCutWorker{}
if err := river.AddWorkerSafely(__job.Workers, obj); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupInitial); err != nil {
return err
}
if err := container.Container.Provide(func(
__job *job.Job,
) (contracts.Initial, error) {
obj := &VideoExtractAudioWorker{}
if err := river.AddWorkerSafely(__job.Workers, obj); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupInitial); err != nil {
return err
}
if err := container.Container.Provide(func() (contracts.CronJob, error) { if err := container.Container.Provide(func() (contracts.CronJob, error) {
obj := &CronJob{} obj := &CronJob{}
if err := obj.Prepare(); err != nil { if err := obj.Prepare(); err != nil {
@@ -57,5 +33,29 @@ func Provide(opts ...opt.Option) error {
}, atom.GroupInitial); err != nil { }, atom.GroupInitial); err != nil {
return err return err
} }
if err := container.Container.Provide(func(
__job *job.Job,
) (contracts.Initial, error) {
obj := &PostVideoCutJobWorker{}
if err := river.AddWorkerSafely(__job.Workers, obj); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupInitial); err != nil {
return err
}
if err := container.Container.Provide(func(
__job *job.Job,
) (contracts.Initial, error) {
obj := &PostVideoExtractAudioJobWorker{}
if err := river.AddWorkerSafely(__job.Workers, obj); err != nil {
return nil, err
}
return obj, nil
}, atom.GroupInitial); err != nil {
return err
}
return nil return nil
} }