Created the link controller
This commit is contained in:
48
server/controller/link.js
Normal file
48
server/controller/link.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
const Link = require('../models/Link');
|
||||||
|
const {getUserByName} = require("./user");
|
||||||
|
const {Op} = require("sequelize");
|
||||||
|
|
||||||
|
module.exports.mapLink = (link) => ({
|
||||||
|
id: link.id, accessId: link.accessId, domainName: link.domainName, tags: link.tags.split(","),
|
||||||
|
title: link.title, type: link.type, clicks: link.clicks, meta: JSON.parse(link.meta)
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports.listLinks = async (domainName, configuration) => {
|
||||||
|
if (configuration.creator) {
|
||||||
|
configuration.creatorId = (await getUserByName(configuration.creator))?.id;
|
||||||
|
if (!configuration.creatorId) delete configuration.creatorId;
|
||||||
|
delete configuration.creator;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.tags)
|
||||||
|
configuration.tags = configuration.tags.split(",");
|
||||||
|
|
||||||
|
if (configuration.title)
|
||||||
|
configuration.title = {[Op.like]: "%" + configuration.title + "%"};
|
||||||
|
|
||||||
|
return (await Link.findAll({
|
||||||
|
where: {...configuration, domainName},
|
||||||
|
limit: configuration.limit || 5000,
|
||||||
|
order: [['createdAt', 'DESC']]
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.getLinkById = async (id) => {
|
||||||
|
return await Link.findOne({where: {id}});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.getLinkByAccess = async (accessId, domainName) => {
|
||||||
|
return await Link.findOne({where: {accessId, domainName}});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.deleteById = async (id) => {
|
||||||
|
await Link.destroy({where: {id}});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.clickLink = async (accessId, domainName) => {
|
||||||
|
await Link.increment({clicks: 1}, {where: {accessId, domainName}});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.createLink = async (configuration) => {
|
||||||
|
return await Link.create(configuration);
|
||||||
|
}
|
Reference in New Issue
Block a user