pyservernodeclient_grpc/server/server.js

94 lines
2.1 KiB
JavaScript

var PROTO_PATH = __dirname + "/../users.proto";
var grpc = require("@grpc/grpc-js");
var protoLoader = require("@grpc/proto-loader");
var packageDefinition = protoLoader.loadSync(PROTO_PATH, {
keepCase: true,
longs: String,
enums: String,
arrays: true,
});
var users_proto = grpc.loadPackageDefinition(packageDefinition);
const { v4: uuidv4 } = require("uuid");
const server = new grpc.Server();
const users = [
{
id: "a68b823c-7ca6-44bc-b721-fb4d5312cafc",
name: "John Brad",
age: 23,
address: "Address 1",
},
{
id: "34415c7c-f82d-4e44-88ca-ae2a1aaa92b7",
name: "Mary Anne",
age: 45,
address: "Address 2",
},
];
server.addService(users_proto.UserService.service, {
getAll: (_, callback) => {
callback(null, { users });
},
get: (call, callback) => {
let user = users.find((n) => n.id == call.request.id);
if (user) {
callback(null, user);
} else {
callback({
code: grpc.status.NOT_FOUND,
details: "Not found",
});
}
},
insert: (call, callback) => {
let user = call.request;
user.id = uuidv4();
users.push(user);
callback(null, user);
},
update: (call, callback) => {
let existinguser = users.find((n) => n.id == call.request.id);
if (existinguser) {
existinguser.name = call.request.name;
existinguser.age = call.request.age;
existinguser.address = call.request.address;
callback(null, existinguser);
} else {
callback({
code: grpc.status.NOT_FOUND,
details: "Not found",
});
}
},
remove: (call, callback) => {
let existinguserIndex = users.findIndex((n) => n.id == call.request.id);
if (existinguserIndex != -1) {
users.splice(existinguserIndex, 1);
callback(null, {});
} else {
callback({
code: grpc.status.NOT_FOUND,
details: "Not found",
});
}
},
});
server.bindAsync(
"127.0.0.1:50051",
grpc.ServerCredentials.createInsecure(),
() => {
console.log("Server running at http://127.0.0.1:50051");
server.start();
}
);