Jobs

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

import "golazy.dev/lazyjobs"

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

import (
	"context"

	"sampleapp/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"
	"sampleapp/app/jobs/sendwelcome"
)

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

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

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