diff --git a/server/model/Redirect.js b/server/model/Redirect.js new file mode 100644 index 0000000..d3b2028 --- /dev/null +++ b/server/model/Redirect.js @@ -0,0 +1,34 @@ +const { Model } = require("objection"); +const Knex = require("knex"); +const knexConfig = require("../knexfile"); + +class Redirect extends Model { + static get tableName() { + return "redirects"; + } + + static get jsonSchema() { + return { + type: "object", + required: ["forward_to", "alias"], + properties: { + id: { type: "integer" }, + forwardTo: { type: "string" }, + alias: { type: "string" }, + }, + }; + } + + static get relationMappings() { + return { + user: { + relation: Model.BelongsToOneRelation, + modelClass: "User", + from: "redirects.user_id", + to: "user.id", + }, + }; + } +} + +module.exports = Redirect; diff --git a/server/routes/redirects.js b/server/routes/redirects.js index b3d9040..d282f33 100644 --- a/server/routes/redirects.js +++ b/server/routes/redirects.js @@ -1,19 +1,9 @@ const router = require("express").Router(); -const Str = require('@supercharge/strings') +const Str = require("@supercharge/strings"); +const Redirect = require("../model/Redirect"); router.get("/", async (req, res) => { - const redirects = [ - { - id: 53, - alias: "edge_ribbon_strongman@proxymail.com", - forwardTo: "foo@bar.com", - }, - { - id: 54, - alias: "mustard_roping_t_shirt@proxymail.com", - forwardTo: "foo@bar.com", - }, - ]; + const redirects = await Redirect.query().where("userId", req.user.id); return res.json(redirects); }); @@ -25,22 +15,26 @@ router.post("/", async (req, res) => { return res.status(400).send("field 'forwardTo' was not provided"); } const alias = `${Str.random(20)}@proxymail.com`; - - const response = { - id: Math.floor((Math.random() * 100) + 1), + const result = await Redirect.query().insert({ + user_id: req.user.id, + forward_to: forwardTo, alias, - forwardTo, - }; + }); - res.json(response); + res.json(result); }); router.delete("/:id", async (req, res) => { const id = req.params.id; + const result = await Redirect.query() + .where("id", id) + .andWhere("userId", req.user.id) + .delete(); + res.send({ status: "Success", - id, + result, }); });