change api and apply new schema

This commit is contained in:
aliamerj
2025-08-26 13:00:28 +03:00
parent 1fe6295d44
commit 667dfdfcc3
4 changed files with 118 additions and 87 deletions

View File

@@ -62,7 +62,7 @@ func (h *Handler) CreateJob(w http.ResponseWriter, r *http.Request) {
return
}
job, err := types.NewJob(userAuth.UserId, userAuth.AccountId, peerID, types.JobType(req.Type), req.Parameters)
job, err := types.NewJob(userAuth.UserId, userAuth.AccountId, peerID, req)
if err != nil {
util.WriteError(ctx, err, w)
return
@@ -72,7 +72,7 @@ func (h *Handler) CreateJob(w http.ResponseWriter, r *http.Request) {
return
}
util.WriteJSONObject(ctx, w, job)
util.WriteJSONObject(ctx, w, toSingleJobResponse(job))
}
func (h *Handler) ListJobs(w http.ResponseWriter, r *http.Request) {
@@ -92,7 +92,12 @@ func (h *Handler) ListJobs(w http.ResponseWriter, r *http.Request) {
return
}
util.WriteJSONObject(ctx, w, jobs)
respBody := make([]*api.Job, 0, len(jobs))
for _, job := range jobs {
respBody = append(respBody, toSingleJobResponse(job))
}
util.WriteJSONObject(ctx, w, respBody)
}
func (h *Handler) GetJob(w http.ResponseWriter, r *http.Request) {
@@ -113,7 +118,7 @@ func (h *Handler) GetJob(w http.ResponseWriter, r *http.Request) {
return
}
util.WriteJSONObject(ctx, w, job)
util.WriteJSONObject(ctx, w, toSingleJobResponse(job))
}
func (h *Handler) checkPeerStatus(peer *nbpeer.Peer) (*nbpeer.Peer, error) {
@@ -496,6 +501,29 @@ func toPeerListItemResponse(peer *nbpeer.Peer, groupsInfo []api.GroupMinimum, dn
}
}
func toSingleJobResponse(job *types.Job) *api.Job {
var parameters map[string]any
job.DecodeParameters(&parameters)
return &api.Job{
Id: job.ID,
Status: (*api.JobStatus)(&job.Status),
CompletedAt: job.CompletedAt,
CreatedAt: job.CreatedAt,
FailedReason: &job.FailedReason,
TriggeredBy: job.TriggeredBy,
Workload: struct {
Parameters *map[string]any "json:\"parameters,omitempty\""
Result *string "json:\"result,omitempty\""
Type *api.JobWorkloadType "json:\"type,omitempty\""
}{
Type: (*api.JobWorkloadType)(&job.Type),
Parameters: &parameters,
Result: &job.Result,
},
}
}
func fqdn(peer *nbpeer.Peer, dnsDomain string) string {
fqdn := peer.FQDN(dnsDomain)
if fqdn == "" {