53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const db = require('../db')
|
|
const Sequelize = require('sequelize')
|
|
const User = require('./user')
|
|
|
|
const Event = db.define('event', {
|
|
title: Sequelize.STRING,
|
|
description: Sequelize.STRING,
|
|
multidate: Sequelize.BOOLEAN,
|
|
start_datetime: { type: Sequelize.DATE, index: true},
|
|
end_datetime: {type: Sequelize.DATE, index: true},
|
|
image_path: Sequelize.STRING,
|
|
activitypub_id: { type: Sequelize.INTEGER, index: true },
|
|
})
|
|
|
|
const Tag = db.define('tag', {
|
|
tag: { type: Sequelize.STRING, index: true, unique: true, primaryKey: true},
|
|
color: { type: Sequelize.STRING }
|
|
})
|
|
|
|
const Comment = db.define('comment', {
|
|
activitypub_id: { type: Sequelize.INTEGER, index: true },
|
|
author: Sequelize.STRING,
|
|
text: Sequelize.STRING,
|
|
})
|
|
|
|
const MailSubscription = db.define('subscription' , {
|
|
filters: Sequelize.JSON,
|
|
mail: Sequelize.TEXT,
|
|
send_on_add: Sequelize.BOOLEAN,
|
|
send_reminder: Sequelize.INTEGER,
|
|
})
|
|
|
|
const Place = db.define('place', {
|
|
name: { type: Sequelize.STRING, unique: true, index: true },
|
|
address: { type: Sequelize.STRING }
|
|
})
|
|
|
|
Comment.belongsTo(Event)
|
|
Event.hasMany(Comment)
|
|
|
|
Event.belongsToMany(Tag, {through: 'tagEvent'})
|
|
Tag.belongsToMany(Event, {through: 'tagEvent'})
|
|
|
|
Event.belongsToMany(User, {through: 'boost'})
|
|
Event.belongsTo(User)
|
|
Event.belongsTo(Place)
|
|
|
|
User.hasMany(Event)
|
|
Place.hasMany(Event)
|
|
User.belongsToMany(User, {through: 'userFollower', as: 'follower'})
|
|
|
|
module.exports = { Event, Comment, Tag, Place }
|