Browse Source

feat: add redirect model

main
Garrit Franke 3 years ago
parent
commit
6f46149658
Signed by: garrit
GPG Key ID: 65586C4DDA55EA2C
  1. 34
      server/model/Redirect.js
  2. 34
      server/routes/redirects.js

34
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;

34
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,
});
});

Loading…
Cancel
Save