diff --git a/backend/app/jobs/demo_cron.go b/backend/app/jobs/demo_cron.go deleted file mode 100644 index 88960d4..0000000 --- a/backend/app/jobs/demo_cron.go +++ /dev/null @@ -1,36 +0,0 @@ -package jobs - -import ( - "time" - - . "github.com/riverqueue/river" - "github.com/sirupsen/logrus" - _ "go.ipao.vip/atom" - "go.ipao.vip/atom/contracts" -) - -var _ contracts.CronJob = (*DemoCronJob)(nil) - -// @provider(cronjob) -type DemoCronJob struct { - log *logrus.Entry `inject:"false"` -} - -// Prepare implements contracts.CronJob. -func (DemoCronJob) Prepare() error { - return nil -} - -// JobArgs implements contracts.CronJob. -func (DemoCronJob) Args() []contracts.CronJobArg { - return []contracts.CronJobArg{ - { - Arg: DemoJob{ - Strings: []string{"a", "b", "c", "d"}, - }, - - PeriodicInterval: PeriodicInterval(time.Second * 10), - RunOnStart: false, - }, - } -} diff --git a/backend/app/jobs/demo_job.go b/backend/app/jobs/demo_job.go deleted file mode 100644 index e36dab8..0000000 --- a/backend/app/jobs/demo_job.go +++ /dev/null @@ -1,53 +0,0 @@ -package jobs - -import ( - "context" - "sort" - "time" - - . "github.com/riverqueue/river" - log "github.com/sirupsen/logrus" - _ "go.ipao.vip/atom" - "go.ipao.vip/atom/contracts" - _ "go.ipao.vip/atom/contracts" -) - -var _ contracts.JobArgs = DemoJob{} - -type DemoJob struct { - Strings []string `json:"strings"` -} - -func (s DemoJob) InsertOpts() InsertOpts { - return InsertOpts{ - Queue: QueueDefault, - Priority: PriorityDefault, - } -} - -func (DemoJob) Kind() string { return "demo_job" } -func (a DemoJob) UniqueID() string { return a.Kind() } - -var _ Worker[DemoJob] = (*DemoJobWorker)(nil) - -// @provider(job) -type DemoJobWorker struct { - WorkerDefaults[DemoJob] -} - -func (w *DemoJobWorker) NextRetry(job *Job[DemoJob]) time.Time { - return time.Now().Add(30 * time.Second) -} - -func (w *DemoJobWorker) Work(ctx context.Context, job *Job[DemoJob]) error { - logger := log.WithField("job", job.Args.Kind()) - - logger.Infof("[START] %s args: %v", job.Args.Kind(), job.Args.Strings) - defer logger.Infof("[END] %s", job.Args.Kind()) - - // modify below - sort.Strings(job.Args.Strings) - logger.Infof("[%s] Sorted strings: %v\n", time.Now().Format(time.TimeOnly), job.Args.Strings) - - return nil -} diff --git a/backend/app/jobs/provider.gen.go b/backend/app/jobs/provider.gen.go index e374698..82ee41c 100755 --- a/backend/app/jobs/provider.gen.go +++ b/backend/app/jobs/provider.gen.go @@ -11,32 +11,6 @@ import ( ) func Provide(opts ...opt.Option) error { - if err := container.Container.Provide(func( - __job *job.Job, - ) (contracts.Initial, error) { - obj := &DemoCronJob{} - if err := obj.Prepare(); err != nil { - return nil, err - } - - container.Later(func() error { return __job.AddPeriodicJobs(obj) }) - - return obj, nil - }, atom.GroupInitial); err != nil { - return err - } - if err := container.Container.Provide(func( - __job *job.Job, - ) (contracts.Initial, error) { - obj := &DemoJobWorker{} - 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) { diff --git a/backend/llm.txt b/backend/llm.txt index 30250ec..fb95da6 100644 --- a/backend/llm.txt +++ b/backend/llm.txt @@ -12,7 +12,6 @@ This file condenses `backend/docs/dev/http_api.md` + `backend/docs/dev/model.md` - DO regenerate code after changes (routes/docs/models). - MUST: in `backend/app/services`, prefer the generated GORM-Gen DAO (`backend/database/models/*`) for DB access; treat raw `*gorm.DB` usage as a last resort. - MUST: after adding/removing/renaming any files under `backend/app/services/`, run `atomctl gen service --path ./app/services` to regenerate `backend/app/services/services.gen.go`; DO NOT edit `services.gen.go` manually. -- MUST: a single service's methods MUST live in a single file; do NOT split one service across multiple files (e.g. `type user struct{}` in `user.go` but methods in `user_admin.go`), because `atomctl gen service` uses filenames to infer services and will generate incorrect `services.gen.go`. - DO add `// @provider` above every controller/service `struct` declaration. - DO keep HTTP middlewares in `backend/app/middlewares/` only. - DO keep all `const` declarations in `backend/pkg/consts/` only (do not declare constants elsewhere).