From 9475328e2fb6451ffad3835dff03e5077f034e12 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Tue, 27 Dec 2022 15:02:13 +0100 Subject: [PATCH] Created the Link model --- server/models/Link.js | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 server/models/Link.js diff --git a/server/models/Link.js b/server/models/Link.js new file mode 100644 index 0000000..ce4d6fa --- /dev/null +++ b/server/models/Link.js @@ -0,0 +1,51 @@ +const Sequelize = require('sequelize'); +const uuid = require('uuid'); +const crypto = require('crypto'); + +const db = require("../config/database"); + +module.exports = db.define("links", { + id: { + type: Sequelize.STRING, + primaryKey: true, + defaultValue: () => uuid.v4().replace(/-/g, '').slice(0, 16) + }, + accessId: { + type: Sequelize.STRING, + defaultValue: () => crypto.randomBytes(3).toString('hex') + }, + creatorId: { + type: Sequelize.STRING, + allowNull: false + }, + tags: { + type: Sequelize.STRING, + defaultValue: "", + get() { + return this.getDataValue('tags').split(','); + }, + set(val) { + this.setDataValue('tags', val.join(',')); + } + }, + title: { + type: Sequelize.STRING, + defaultValue: "Unknown link" + }, + type: { + type: Sequelize.STRING, + allowNull: false + }, + domainName: { + type: Sequelize.STRING, + allowNull: false + }, + clicks: { + type: Sequelize.INTEGER, + defaultValue: 0 + }, + meta: { + type: Sequelize.JSON, + defaultValue: {} + } +}); \ No newline at end of file