Skip to content

Instantly share code, notes, and snippets.

@HarshitRuwali
Last active February 10, 2023 12:49
Show Gist options
  • Save HarshitRuwali/ff36ea6f8edfa55a084521d65ca67fb8 to your computer and use it in GitHub Desktop.
Save HarshitRuwali/ff36ea6f8edfa55a084521d65ca67fb8 to your computer and use it in GitHub Desktop.
API endpoint for getting or deleting data from redis
const express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
var redis = require("redis");
var async = require("async");
const e = require("express");
let redisClient = redis.createClient("6379","redis-db");
app.get('/getAllRedisKeys', (req, res) => {
redisClient.keys('*', function (error, keys) {
if(keys){
var results = {};
results["keys"] = keys;
res.json(results);
}
if(error){
console.log("Error from getAllRedisKeys--->>", error);
return "Error"
}
});
});
app.get('/getAllRedisData', (req, res) => {
redisClient.keys('*', function (error, keys) {
if(keys){
async.map(keys, function(key, callback) {
var data = {};
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
data['key']=key;
data['data']=value;
callback(null, data);
});
},function (error, result) {
res.json({"data":result});
if (error){
console.log(error);
return "error";
}
});
}
if(error){
console.log("Error from getAllRedisData--->>", error);
return "Error"
}
});
});
app.post('/getRedisDataByClientId', (req, res) => {
var client_id = req.body.client_id;
var client_id_regex = /\d*-/;
redisClient.keys('*', function (error, keys) {
if(keys){
async.map(keys, function(key, callback) {
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
var client_id_keys = {};
if(key_client_id == client_id){
client_id_keys['key']=key;
client_id_keys['data']=value;
}
callback(null, client_id_keys);
});
},function (error, result) {
result = result.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
res.json({"data":result});
if (error){
console.log(error);
return "error";
}
});
}
if(error){
console.log("Error from getRedisDataByClientId--->>", error);
return "Error"
}
});
});
app.post('/getRedisKeysByClientId', (req, res) => {
var client_id = req.body.client_id;
var client_id_regex = /\d*-/;
redisClient.keys('*', function (error, keys) {
if(keys){
var results = {};
var client_id_keys = [];
async.map(keys, function(key, callback){
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
if(key_client_id == client_id){
client_id_keys.push(key);
}
})
results["keys"] = client_id_keys;
res.json(results);
}
if(error){
console.log("Error from getRedisKeysByClientId--->>", error);
return "Error"
}
});
});
app.post('/deleteRedisKeysByClientId', (req, res) => {
var client_id = req.body.client_id;
var client_id_regex = /\d*-/;
redisClient.keys('*', function (error, keys) {
if(keys){
var results = {};
var client_id_keys = [];
async.map(keys, function(key, callback){
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
if(key_client_id == client_id){
client_id_keys.push(key);
redisClient.del(key);
}
});
redisClient.del(client_id_keys, function(err, response){
if(response != null){
console.log("deleted");
}else{
console.log("error");
}
});
results["keys"] = client_id_keys;
res.json(results);
}
if(error){
console.log("Error from deleteRedisKeysByClientId--->>", error);
return "Error"
}
});
});
app.post('/getRedisKeysByTripId', (req, res) => {
var trip_id = req.body.trip_id;
var trip_id_regex = /\d*-\d*/;
redisClient.keys('*', function (error, keys) {
if(keys){
var results = {};
var trip_id_keys = [];
async.map(keys, function(key, callback){
var key_trip_id = key.match(trip_id_regex);
if(key_trip_id[0] == trip_id){
trip_id_keys.push(key);
}
})
results["keys"] = trip_id_keys;
res.json(results);
}
if(error){
console.log("Error from getRedisKeysByTripId--->>", error);
return "Error"
}
});
});
app.post('/getRedisDataByTripId', (req, res) => {
var trip_id = req.body.trip_id;
var trip_id_regex = /\d*-\d*/;
redisClient.keys('*', function (error, keys) {
if(keys){
async.map(keys, function(key, callback) {
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
var key_trip_id = key.match(trip_id_regex);
var trip_id_keys = {};
if(key_trip_id[0] == trip_id){
trip_id_keys['key']=key;
trip_id_keys['data']=value;
}
callback(null, trip_id_keys);
});
},function (error, result) {
result = result.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
res.json({"data":result});
if (error){
console.log(error);
return "error";
}
});
}
if(error){
console.log("Error from getRedisDataByTripId--->>", error);
return "Error"
}
});
});
app.post('/deleteRedisKeysByTripId', (req, res) => {
var trip_id = req.body.trip_id;
var trip_id_regex = /\d*-\d*/;
redisClient.keys('*', function (error, keys) {
if(keys){
var results = {};
var trip_id_keys = [];
async.map(keys, function(key, callback){
var key_trip_id = key.match(trip_id_regex);
if(key_trip_id[0] == trip_id){
trip_id_keys.push(key);
}
})
redisClient.del(trip_id_keys, function(err, response){
if(response != null){
console.log("deleted");
}else{
console.log("error");
}
});
results["keys"] = trip_id_keys;
res.json(results);
}
if(error){
console.log("Error from deleteRedisKeysByTripId--->>", error);
return "Error"
}
});
});
let port = 3005;
app.listen(port, () => console.log(`Server is listening on port ${port}.`));
const express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
var redis = require("redis");
var async = require("async");
const e = require("express");
let redisClient = redis.createClient("6379","redis-db");
app.post('/redisActions', (req, res) => {
var client_id = req.body.client_id;
var trip_id = req.body.trip_id;
var api_type = req.body.api_type;
var query = req.body.query;
var trip_id_regex = /\d*-\d*/;
var client_id_regex = /\d*-/;
redisClient.keys('*', function (error, keys) {
if(error){
console.log("Error from redisActions--->>", error);
return "Error"
}
if(keys && api_type == "getAllRedisKeys"){
var results = {};
results["keys"] = keys;
res.json(results);
}else if(keys && api_type == "getAllRedisData"){
async.map(keys, function(key, callback) {
var data = {};
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
data['key']=key;
data['data']=value;
callback(null, data);
});
},function (error, result) {
res.json({"data":result});
if (error){
console.log(error);
return "error";
}
});
}else if(keys && api_type == "getRedisDataByClientId"){
if(Array.isArray(client_id)){
var result_all = [];
async.map(client_id, function(clients, callbackCB){
async.map(keys, function(key, callback) {
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
var client_id_keys = {};
if(key_client_id == clients){
client_id_keys['key']=key;
client_id_keys['data']=value;
}
callback(null, client_id_keys);
});
},function (error, result) {
if (error){
console.log(error);
return "error";
}
result = result.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
result_all.push(result);
callbackCB(null, result_all);
});
},function final (error, result) {
if (error){
console.log(error);
return "error";
}
res.json({"data":result_all});
});
}else{
async.map(keys, function(key, callback) {
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
var client_id_keys = {};
if(key_client_id == client_id){
client_id_keys['key']=key;
client_id_keys['data']=value;
}
callback(null, client_id_keys);
});
},function (error, result) {
result = result.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
res.json({"data":result});
if (error){
console.log(error);
return "error";
}
});
}
}else if(keys && api_type == "getRedisKeysByClientId"){
if(Array.isArray(client_id)){
var result_all = [];
async.map(client_id, function(clients, callbackCB){
async.map(keys, function(key, callback){
var client_id_keys = {}
client_id_keys[clients] = {};
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
if(key_client_id == clients){
client_id_keys[clients]["key"] = key;
result_all.push(client_id_keys);
}
});
callbackCB(null, result_all);
},function final (error, result) {
if (error){
console.log(error);
return "error";
}
result_all = result_all.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
res.json({"data":result_all});
});
}else{
var results = {};
var client_id_keys = [];
async.map(keys, function(key, callback){
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
if(key_client_id == client_id){
client_id_keys.push(key);
}
})
results["keys"] = client_id_keys;
res.json(results);
}
}else if(keys && api_type == "deleteRedisKeysByClientId"){
var client_id_keys = [];
if(Array.isArray(client_id)){
async.map(client_id, function(clients, callbackCB){
async.map(keys, function(key, callback){
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
if(key_client_id == clients){
client_id_keys.push(key);
}
});
callbackCB(null, client_id_keys);
},function final (error, result) {
if (error){
console.log(error);
return "error";
}
client_id_keys = client_id_keys.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
});
}else{
var results = {};
var client_id_keys = [];
async.map(keys, function(key, callback){
var key_client_id = key.match(client_id_regex);
key_client_id = key_client_id[0].split("-")[0];
if(key_client_id == client_id){
client_id_keys.push(key);
redisClient.del(key);
}
});
}
redisClient.del(client_id_keys, function(err, response){
if(response != null){
console.log("deleted");
}else{
console.log("error");
}
});
var result = {};
result["keys"] = client_id_keys;
res.json(result);
}else if(keys && api_type == "getRedisKeysByTripId"){
if(Array.isArray(trip_id)){
var result_all = [];
async.map(trip_id, function(trip_ids, callbackCB){
async.map(keys, function(key, callback){
var trip_id_keys = {}
trip_id_keys[trip_ids] = {};
var key_trip_id = key.match(trip_id_regex);
key_trip_id = key_trip_id[0];
if(key_trip_id == trip_ids){
trip_id_keys[trip_ids] = key;
result_all.push(trip_id_keys);
}
});
callbackCB(null, result_all);
},function final (error, result) {
if (error){
console.log(error);
return "error";
}
result_all = result_all.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
res.json({"data":result_all});
});
}else{
var results = {};
var trip_id_keys = [];
async.map(keys, function(key, callback){
var key_trip_id = key.match(trip_id_regex);
if(key_trip_id[0] == trip_id){
trip_id_keys.push(key);
}
})
results["keys"] = trip_id_keys;
res.json(results);
}
}else if(keys && api_type == "getRedisDataByTripId"){
if(Array.isArray(trip_id)){
var result_all = [];
async.map(trip_id, function(trip_ids, callbackCB){
async.map(keys, function(key, callback) {
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
var key_trip_id = key.match(trip_id_regex);
key_trip_id = key_trip_id[0];
var trip_id_keys = {};
if(key_trip_id == trip_ids){
trip_id_keys['key']=key;
trip_id_keys['data']=value;
}
callback(null, trip_id_keys);
});
},function (error, result) {
if (error){
console.log(error);
return "error";
}
result = result.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
result_all.push(result);
callbackCB(null, result_all);
});
},function final (error, result) {
if (error){
console.log(error);
return "error";
}
res.json({"data":result_all});
});
}else{
async.map(keys, function(key, callback) {
redisClient.get(key, function (error, value) {
if (error){
callback(error, null);
}
var key_trip_id = key.match(trip_id_regex);
var trip_id_keys = {};
if(key_trip_id[0] == trip_id){
trip_id_keys['key']=key;
trip_id_keys['data']=value;
}
callback(null, trip_id_keys);
});
},function (error, result) {
result = result.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
res.json({"data":result});
if (error){
console.log(error);
return "error";
}
});
}
}else if(keys && api_type == "deleteRedisKeysByTripId"){
if(Array.isArray(trip_id)){
var results = {};
var trip_id_keys = [];
async.map(trip_id, function(trip_ids, callbackCB){
async.map(keys, function(key, callback){
var key_trip_id = key.match(trip_id_regex);
key_trip_id = key_trip_id[0];
if(key_trip_id == trip_ids){
trip_id_keys.push(key);
}
});
callbackCB(null, trip_id_keys);
},function final (error, result) {
if (error){
console.log(error);
return "error";
}
trip_id_keys = trip_id_keys.filter(
obj => !(obj && Object.keys(obj).length == 0)
);
});
}else{
var results = {};
var trip_id_keys = [];
async.map(keys, function(key, callback){
var key_trip_id = key.match(trip_id_regex);
if(key_trip_id[0] == trip_id){
trip_id_keys.push(key);
}
})
}
redisClient.del(trip_id_keys, function(err, response){
if(response != null){
console.log("deleted");
}else{
console.log("error");
}
});
results["keys"] = trip_id_keys;
res.json(results);
}else{
var accepted_parms = ["getAllRedisKeys", "getAllRedisData", "getRedisDataByClientId", "getRedisKeysByClientId", "deleteRedisKeysByClientId", "getRedisKeysByTripId", "getRedisDataByTripId", "deleteRedisKeysByTripId"];
res.json({"Error in params. Check for the params in the body. Accepted api_type: ": accepted_parms});
}
});
});
let port = 3005;
app.listen(port, () => console.log(`Server is listening on port ${port}.`));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment