GetUserJobsCommand.java
package com.wilzwert.myjobs.core.domain.model.job.command;
import com.wilzwert.myjobs.core.domain.model.job.JobStatus;
import com.wilzwert.myjobs.core.domain.model.job.JobStatusMeta;
import com.wilzwert.myjobs.core.domain.model.user.UserId;
/**
* @author Wilhelm Zwertvaegher
*/
public record GetUserJobsCommand(UserId userId, int page, int itemsPerPage, JobStatus status, JobStatusMeta statusMeta, String sort, String query) {
public static class Builder {
private UserId userId;
private int page;
private int itemsPerPage;
private JobStatus status;
private JobStatusMeta statusMeta;
private String sort;
private String query;
public Builder() {}
public Builder(GetUserJobsCommand command) {
this.userId = command.userId();
this.page = command.page();
this.itemsPerPage = command.itemsPerPage();
this.status = command.status();
this.statusMeta = command.statusMeta();
this.sort = command.sort();
this.query = command.query();
}
public Builder userId(UserId userId) {
this.userId = userId;
return this;
}
public Builder page(int page) {
this.page = page;
return this;
}
public Builder itemsPerPage(int itemsPerPage) {
this.itemsPerPage = itemsPerPage;
return this;
}
public Builder status(JobStatus status) {
this.status = status;
return this;
}
public Builder statusMeta(JobStatusMeta statusMeta) {
this.statusMeta = statusMeta;
return this;
}
public Builder sort(String sort) {
this.sort = sort;
return this;
}
public Builder query(String query) {
this.query = query;
return this;
}
public GetUserJobsCommand build() {
return new GetUserJobsCommand(userId, page, itemsPerPage, status, statusMeta, sort, query);
}
}
}