From 7d894ab0e0007f0010383de43f6b2f69b0091c6b Mon Sep 17 00:00:00 2001 From: Rogee Date: Thu, 16 Jan 2025 09:28:53 +0800 Subject: [PATCH] feat: add some new features --- .../app/events/subscribers/post_created.go | 4 +- backend/app/jobs/VideoCut.go | 52 ------------------ backend/app/jobs/VideoExtractAudio.go | 52 ------------------ backend/app/jobs/post_video_cut.go | 54 +++++++++++++++++++ backend/app/jobs/post_video_extract_audio.go | 52 ++++++++++++++++++ backend/app/jobs/provider.gen.go | 48 ++++++++--------- 6 files changed, 132 insertions(+), 130 deletions(-) delete mode 100644 backend/app/jobs/VideoCut.go delete mode 100644 backend/app/jobs/VideoExtractAudio.go create mode 100644 backend/app/jobs/post_video_cut.go create mode 100644 backend/app/jobs/post_video_extract_audio.go diff --git a/backend/app/events/subscribers/post_created.go b/backend/app/events/subscribers/post_created.go index 0f885cc..2013046 100644 --- a/backend/app/events/subscribers/post_created.go +++ b/backend/app/events/subscribers/post_created.go @@ -72,7 +72,7 @@ func (e *PostCreated) Handler(msg *message.Message) ([]*message.Message, error) } // cut video - _, err = job.Insert(context.Background(), jobs.VideoCut{ + _, err = job.Insert(context.Background(), jobs.PostVideoCutJob{ PostID: post.ID, Hash: video.Hash, TenantID: post.TenantID, @@ -83,7 +83,7 @@ func (e *PostCreated) Handler(msg *message.Message) ([]*message.Message, error) } // extract audio - _, err = job.Insert(context.Background(), jobs.VideoExtractAudio{ + _, err = job.Insert(context.Background(), jobs.PostVideoExtractAudioJob{ PostID: post.ID, Hash: video.Hash, TenantID: post.TenantID, diff --git a/backend/app/jobs/VideoCut.go b/backend/app/jobs/VideoCut.go deleted file mode 100644 index d32d818..0000000 --- a/backend/app/jobs/VideoCut.go +++ /dev/null @@ -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 -} diff --git a/backend/app/jobs/VideoExtractAudio.go b/backend/app/jobs/VideoExtractAudio.go deleted file mode 100644 index 2009919..0000000 --- a/backend/app/jobs/VideoExtractAudio.go +++ /dev/null @@ -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 -} diff --git a/backend/app/jobs/post_video_cut.go b/backend/app/jobs/post_video_cut.go new file mode 100644 index 0000000..0fc3185 --- /dev/null +++ b/backend/app/jobs/post_video_cut.go @@ -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 +} diff --git a/backend/app/jobs/post_video_extract_audio.go b/backend/app/jobs/post_video_extract_audio.go new file mode 100644 index 0000000..7e054c2 --- /dev/null +++ b/backend/app/jobs/post_video_extract_audio.go @@ -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 +} diff --git a/backend/app/jobs/provider.gen.go b/backend/app/jobs/provider.gen.go index 43440c4..7649063 100755 --- a/backend/app/jobs/provider.gen.go +++ b/backend/app/jobs/provider.gen.go @@ -11,30 +11,6 @@ import ( ) 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) { obj := &CronJob{} if err := obj.Prepare(); err != nil { @@ -57,5 +33,29 @@ func Provide(opts ...opt.Option) error { }, atom.GroupInitial); err != nil { 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 }