94 lines
2.1 KiB
JavaScript
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();
|
|
}
|
|
);
|