2025-02-20 22:59:55 -05:00

51 lines
824 B
Go

package models
import "encoding/json"
type JobName string
type JobType string
type JobResponse Job
type Job struct {
// Type of job
Type JobType `json:"type"`
// The data you are packaging with the job
Data any `json:"data"`
}
// Takes in raw job data and a reference struct for it's data
func GetJobFromData[T any](j []byte, data T) (*Job, T, error) {
job := &Job{}
err := json.Unmarshal(j, job)
if err != nil {
return nil, data, err
}
dat, err := json.Marshal(job.Data)
if err != nil {
return nil, data, err
}
err = json.Unmarshal(dat, &data)
job.Data = data
return job, data, err
}
func GetDataFromStruct[T any](job Job, data T) (T, error) {
dat, err := json.Marshal(job.Data)
if err != nil {
return data, err
}
err = json.Unmarshal(dat, &data)
job.Data = data
return data, err
}