Jobs

// app/jobs/basejob/basejob.go
package basejob

import "golazy.dev/lazyjobs"

type BaseJob struct {
	lazyjobs.BaseJob
}
// app/jobs/send_welcome/sendwelcome.go
package sendwelcome

import (
	"context"

	"sample_app/app/jobs/basejob"
)

type Job struct {
	basejob.BaseJob
	UserID string `json:"user_id"`
}

func (*Job) Kind() string { return "mail.send_welcome" }

func (j *Job) Work(ctx context.Context) error {
	// Load services from ctx and send the welcome message for j.UserID.
	return nil
}
// app/jobs/jobs.go
package jobs

import (
	"golazy.dev/lazyjobs"
	"sample_app/app/jobs/send_welcome"
)

func DefinedJobs(runner *lazyjobs.JobRunner) {
	runner.MustRegister(&sendwelcome.Job{})
}
// init/app.go
package appinit

import (
	"golazy.dev/lazyapp"
	"golazy.dev/lazyjobs"
	"sample_app/app"
	"sample_app/app/jobs"
)

func App() *lazyapp.App {
	return lazyapp.New(lazyapp.Config{
		Name:         "sample_app",
		Drawer:       Draw,
		Public:       app.Public,
		Views:        app.Views,
		Dependencies: Dependencies,
		Jobs: lazyapp.Jobs(lazyjobs.Config{
			Define:  jobs.DefinedJobs,
			Workers: 2,
		}),
	})
}