mirror of
https://github.com/autistic-symposium/backend-and-orchestration-toolkit.git
synced 2025-06-08 15:02:55 -04:00
38 lines
930 B
JavaScript
38 lines
930 B
JavaScript
const grpc = require("grpc");
|
|
const protoLoader = require("@grpc/proto-loader")
|
|
const packageDef = protoLoader.loadSync("todo.proto", {});
|
|
const grpcObject = grpc.loadPackageDefinition(packageDef);
|
|
const todoPackage = grpcObject.todoPackage;
|
|
|
|
const server = new grpc.Server();
|
|
server.bind("0.0.0.0:40000",
|
|
grpc.ServerCredentials.createInsecure());
|
|
|
|
server.addService(todoPackage.Todo.service,
|
|
{
|
|
"createTodo": createTodo,
|
|
"readTodos" : readTodos,
|
|
"readTodosStream": readTodosStream
|
|
});
|
|
server.start();
|
|
|
|
const todos = []
|
|
function createTodo (call, callback) {
|
|
const todoItem = {
|
|
"id": todos.length + 1,
|
|
"text": call.request.text
|
|
}
|
|
todos.push(todoItem)
|
|
callback(null, todoItem);
|
|
}
|
|
|
|
function readTodosStream(call, callback) {
|
|
|
|
todos.forEach(t => call.write(t));
|
|
call.end();
|
|
}
|
|
|
|
|
|
function readTodos(call, callback) {
|
|
callback(null, {"items": todos})
|
|
}
|