Skip to content

Instantly share code, notes, and snippets.

@cartorjo
Created January 15, 2021 16:07
Show Gist options
  • Save cartorjo/f45c9c1a369f0ded0f39ffdfac579c68 to your computer and use it in GitHub Desktop.
Save cartorjo/f45c9c1a369f0ded0f39ffdfac579c68 to your computer and use it in GitHub Desktop.
Establishes a connection to a PostgreSQL database using credentials and handles create and read operations on the database
// Node-postgres, supports for callbacks, promises, async/await,
const pg = require("pg");
// Parse connectionString to get username, password, database name, server, port,...
const parse = require('pg-connection-string').parse;
// Our config details
let config = parse(connectionString);
// Set up a new client using our config details
let client = new pg.Client(config);
client.connect(function (err) {
if (err) {
console.log(err);
process.exit(1);
} else {
client.query(
"CREATE TABLE IF NOT EXISTS objects (object varchar(256) NOT NULL, definition varchar(256) NOT NULL)",
function (err, result) {
if (err) {
console.log(err);
}
}
);
}
});
function addObject(object, definition) {
return new Promise(function (resolve, reject) {
let queryText = "INSERT INTO objects(object,definition) VALUES($1, $2)";
client.query(
queryText, [object, definition],
function (error, result) {
if (error) {
reject(error);
} else {
resolve(result);
}
}
);
});
}
function getObject() {
return new Promise(function (resolve, reject) {
client.query("SELECT * FROM objects ORDER BY object ASC", function (
err,
result
) {
if (err) {
reject(err);
} else {
resolve(result.rows);
}
});
});
}
// Send the data to the addObject function and send a response if successful
app.put("/objects", function (request, response) {
addObject(request.body.object, request.body.definition)
.then(function (resp) {
response.send(resp);
})
.catch(function (err) {
response.status(500).send(err);
});
});
// Use the getObject function to get a list of objects and definitions from the database
app.get("/objects", function (request, response) {
getObject()
.then(function (objects) {
response.send(objects);
})
.catch(function (err) {
response.status(500).send(err);
});
});
// Listen for a connection
app.listen(port, function () {
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