Backend/models/ShortenedLink.ts

32 lines
888 B
TypeScript

import {sequelize} from "../app";
import * as crypto from "crypto";
import {DataTypes, InferAttributes, InferCreationAttributes, Model} from "sequelize";
export interface IShortenedLink extends Model<InferAttributes<IShortenedLink>, InferCreationAttributes<IShortenedLink>> {
shortenedId?: string
originalUrl: string
clientId?: string
clicks?: number
}
const ShortenedSchema = sequelize.define<IShortenedLink>('shortened_links', {
shortenedId: {
type: DataTypes.STRING,
defaultValue: () => crypto.randomBytes(3).toString('hex'),
allowNull: true
},
originalUrl: {
type: DataTypes.STRING,
allowNull: false
},
clientId: {
type: DataTypes.BIGINT,
allowNull: false
},
clicks: {
type: DataTypes.INTEGER,
defaultValue: 0
}
});
export const ShortenedLink = ShortenedSchema;