diff --git a/gadget-code/src/models/drone-registration.ts b/gadget-code/src/models/drone-registration.ts index 56d4348..8d0008e 100644 --- a/gadget-code/src/models/drone-registration.ts +++ b/gadget-code/src/models/drone-registration.ts @@ -10,6 +10,7 @@ export const DroneRegistrationSchema = new Schema({ updatedAt: { type: Date, required: false }, user: { type: Schema.Types.ObjectId, ref: "User", required: true }, hostname: { type: String, required: true }, + workspaceDir: { type: String, required: true }, status: { type: String, enum: DroneStatus, diff --git a/gadget-code/src/services/drone.ts b/gadget-code/src/services/drone.ts index 90bfe7c..7a80330 100644 --- a/gadget-code/src/services/drone.ts +++ b/gadget-code/src/services/drone.ts @@ -80,6 +80,13 @@ class DroneService extends DtpService { return registration; } + async getForUser(user: IUser): Promise { + const registrations = await DroneRegistration.find({ user: user._id }) + .sort({ hostname: 1, workspaceDir: 1 }) + .populate(this.populateDroneRegistration); + return registrations; + } + async setStatus( registration: IDroneRegistration, status: DroneStatus, diff --git a/packages/api/src/interfaces/drone-registration.ts b/packages/api/src/interfaces/drone-registration.ts index 81e8a87..41cf513 100644 --- a/packages/api/src/interfaces/drone-registration.ts +++ b/packages/api/src/interfaces/drone-registration.ts @@ -18,6 +18,7 @@ export interface IDroneRegistration extends Document { updatedAt: Date; user: IUser | Types.ObjectId; hostname: string; + workspaceDir: string; status: DroneStatus; currentJobId?: string; }