tududi/backend/models/calendar_token.js
antanst c3e8449a25 Standardize UID implementation across backend
- Add unified UID column migration for all entities
- Create centralized UID generation utility
- Update all models to use standardized UID hooks
- Fix route handlers to support UID-based lookups
- Update slug utilities for consistent UID extraction
- Fix tag tests to use query parameters instead of path params
- Configure Jest for better TypeScript support
2025-08-06 15:54:45 +03:00

88 lines
2.1 KiB
JavaScript

const { DataTypes } = require('sequelize');
const { sequelize } = require('./models');
const { uid } = require('../utils/uid');
const CalendarToken = sequelize.define(
'CalendarToken',
{
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
uid: {
type: DataTypes.STRING(),
allowNull: false,
unique: true,
defaultValue: uid,
},
user_id: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'Users',
key: 'id',
},
onDelete: 'CASCADE',
},
provider: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'google',
},
access_token: {
type: DataTypes.TEXT,
allowNull: false,
},
refresh_token: {
type: DataTypes.TEXT,
allowNull: true,
},
token_type: {
type: DataTypes.STRING,
defaultValue: 'Bearer',
},
expires_at: {
type: DataTypes.DATE,
allowNull: true,
},
scope: {
type: DataTypes.TEXT,
allowNull: true,
},
connected_email: {
type: DataTypes.STRING,
allowNull: true,
},
created_at: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
},
updated_at: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
},
},
{
tableName: 'calendar_tokens',
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at',
indexes: [
{
unique: true,
fields: ['user_id', 'provider'],
},
],
}
);
// Associations
CalendarToken.associate = function (models) {
CalendarToken.belongsTo(models.User, {
foreignKey: 'user_id',
as: 'user',
});
};
module.exports = CalendarToken;