Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions api/project/model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
const db = require("../../data/dbConfig");
const helpers = require("./project-middleware");

function find() {
const getProject = db("projects as pr").select(
"pr.project_name",
"pr.project_description",
"pr.project_completed"
);
return getProject.then((projects) => {
return projects.map((project) => helpers.projectToBody(project));
});
}

const getProjects = async () => {
try {
const projects = await db("projects");
return projects.map((project) => {
project.project_completed === 0
? { ...project, project_completed: false }
: { ...project, project_completed: true };
});
} catch (err) {
return { err: "not getting projects" };
}
};

const create = async (project) => {
const [id] = await db("projects").insert(project, [
"project_id",
"project_name",
"project_description",
]);
return getById(id);
};

const getById = async (project_id) => {
try {
const project = await db("projects").where({ project_id }).first();
return {
...project,
project_completed: project.project_completed === 0 ? false : true,
};
} catch (err) {
return { err: "not getting project" };
}
};

module.exports = {
find,
getById,
create,
getProjects,
};
18 changes: 18 additions & 0 deletions api/project/project-middleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
function intToBool(int) {
return int === 1 ? true : false;
}
function projectToBody(project) {
const result = {
...project,
project_completed: intToBool(project.project_completed),
};
return result;
}
function taskToBody(task) {
const result = {
...task,
task_completed: intToBool(task.task_completed),
};
return result;
}
module.exports = { projectToBody, taskToBody };
35 changes: 35 additions & 0 deletions api/project/router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// build your `/api/projects` router here
const express = require("express");
const Projects = require("./model");

const router = express.Router();

router.get("/", async (req, res, next) => {
try {
const allProjects = await Projects.find();
res.status(200).json(allProjects);
console.log(res.body, "here");
} catch (err) {
next(err);
}
});

router.get("/:id", async (req, res, next) => {
try {
const data = await Projects.getById(req.params.id);
res.json(data);
} catch (err) {
next(err);
}
});

router.post("/", async (req, res, next) => {
try {
const data = await Projects.create(req.body);
res.status(201).json(data);
} catch (err) {
next(err);
}
});

module.exports = router;
19 changes: 19 additions & 0 deletions knex.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const sharedConfig = {
client: "sqlite3",
useNullAsDefault: true,
migrations: { directory: "./data/migrations" },
pool: {
afterCreate: (conn, done) => conn.run("PRAGMA foreign_keys = ON", done),
},
};

module.exports = {
development: {
...sharedConfig,
connection: { filename: "./data/lambda.db3" },
},
testing: {
...sharedConfig,
connection: { filename: "./data/test.db3" },
},
};
5 changes: 5 additions & 0 deletions migrations/dbConfig.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const knex = require("knex");
const configurations = require("../knexfile.js");
const environment = process.env.NODE_ENV || "development";

module.exports = knex(configurations[environment]);
7 changes: 7 additions & 0 deletions migrations/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const server = require("./api/server.js");

const PORT = process.env.PORT || 8000;

server.listen(PORT, () => {
console.log(`Listening on port ${PORT}...`);
});
Loading