Skip to content

Commit

Permalink
feat: add queue registration
Browse files Browse the repository at this point in the history
  • Loading branch information
jyecusch committed Jan 4, 2022
1 parent 499a97c commit a2efe19
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/resources/queue.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Resource, ResourceDeclareRequest, ResourceDeclareResponse, ResourceType } from "@nitric/api/proto/resource/v1/resource_pb";
import { Task } from "src/types";
import resourceClient from './client';
import { queues, Queue } from "../api/";

type QueuePermission = "sending" | "receiving";
Expand All @@ -14,6 +16,29 @@ class QueueResource {
this.name = name;
}

private async register(): Promise<void> {
const req = new ResourceDeclareRequest();
const resource = new Resource();
resource.setName(this.name);
resource.setType(ResourceType.QUEUE);
req.setResource(resource);

return new Promise<void>((resolve, reject) => {
resourceClient.declare(
req,
(error, response: ResourceDeclareResponse) => {
if (error) {
// TODO: remove this ignore when not using link
// @ts-ignore
reject(fromGrpcError(error));
} else {
resolve();
}
}
);
});
}

public for(perm: QueuePermission[] | QueuePermission, ...perms: QueuePermission[]): Queue {
// TODO: call server to request permissions.
return queues().queue(this.name);
Expand All @@ -26,6 +51,7 @@ const queuesCache: Record<string, QueueResource> = {};
export const queue = (name: string): QueueResource => {
if(!queuesCache[name]) {
queuesCache[name] = new QueueResource(name);
queuesCache[name]['register']();
}

return queuesCache[name];
Expand Down

0 comments on commit a2efe19

Please sign in to comment.