Files
linkding/models/Link.js
2025-11-16 10:33:59 +01:00

67 lines
1.3 KiB
JavaScript

const { DataTypes } = require('sequelize');
const { v4: uuidv4 } = require('uuid');
module.exports = (sequelize) => {
const Link = sequelize.define('Link', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
url: {
type: DataTypes.TEXT,
allowNull: false,
unique: true,
validate: {
isUrl: true
}
},
title: {
type: DataTypes.TEXT,
allowNull: true
},
description: {
type: DataTypes.TEXT,
allowNull: true
},
image: {
type: DataTypes.TEXT,
allowNull: true
},
created_at: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
allowNull: false
},
created_by: {
type: DataTypes.TEXT,
allowNull: true
},
modified_at: {
type: DataTypes.DATE,
allowNull: true
},
modified_by: {
type: DataTypes.TEXT,
allowNull: true
},
archived: {
type: DataTypes.BOOLEAN,
defaultValue: false,
allowNull: false
}
}, {
tableName: 'links',
timestamps: false, // We're using created_at and modified_at manually
underscored: true
});
// Hook to set modified_at before update
Link.beforeUpdate((link) => {
link.modified_at = new Date();
});
return Link;
};