catch missed additions for db separation, add in tokenizers
This commit is contained in:
77
backend/src/db.ts
Normal file
77
backend/src/db.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import { Sequelize, Model, DataTypes } from 'sequelize'
|
||||
|
||||
const databasePath = './testdb.db'
|
||||
|
||||
export const database = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
storage: databasePath
|
||||
})
|
||||
|
||||
export const Character = database.define(
|
||||
'Characters',
|
||||
{
|
||||
id: { type: DataTypes.INTEGER, primaryKey: true },
|
||||
characterName: { type: DataTypes.TEXT },
|
||||
playerName: { type: DataTypes.TEXT },
|
||||
role: { type: DataTypes.TEXT },
|
||||
creationDate: { type: DataTypes.INTEGER },
|
||||
status: { type: DataTypes.TEXT }
|
||||
},
|
||||
{ timestamps: false }
|
||||
)
|
||||
|
||||
export const Game = database.define(
|
||||
'Games',
|
||||
{
|
||||
id: { type: DataTypes.INTEGER, primaryKey: true },
|
||||
title: { type: DataTypes.TEXT },
|
||||
status: { type: DataTypes.TEXT },
|
||||
fix: { type: DataTypes.BOOLEAN },
|
||||
postdate: { type: DataTypes.INTEGER },
|
||||
gamemaster: { type: DataTypes.TEXT },
|
||||
payoutEB: { type: DataTypes.INTEGER },
|
||||
payoutIP: { type: DataTypes.INTEGER },
|
||||
payputLoot: { type: DataTypes.INTEGER }
|
||||
},
|
||||
{ timestamps: false }
|
||||
)
|
||||
|
||||
export const Pick = database.define(
|
||||
'Picks',
|
||||
{
|
||||
gameId: { type: DataTypes.INTEGER, primaryKey: true },
|
||||
gameTitle: { type: DataTypes.TEXT },
|
||||
characterId: { type: DataTypes.INTEGER, primaryKey: true },
|
||||
characterName: { type: DataTypes.TEXT }
|
||||
},
|
||||
{ timestamps: false }
|
||||
)
|
||||
|
||||
export const App = database.define(
|
||||
'Apps',
|
||||
{
|
||||
gameId: { type: DataTypes.INTEGER, primaryKey: true },
|
||||
gameTitle: { type: DataTypes.TEXT },
|
||||
characterId: { type: DataTypes.INTEGER, primaryKey: true },
|
||||
characterName: { type: DataTypes.TEXT }
|
||||
},
|
||||
{ timestamps: false }
|
||||
)
|
||||
|
||||
// Bind characters to applications and picks
|
||||
Character.hasMany(App, { foreignKey: 'characterId', as: 'appliedCharacter' })
|
||||
App.belongsTo(Character, { foreignKey: 'characterId', as: 'appliedCharacter' })
|
||||
Character.hasMany(Pick, { foreignKey: 'characterId', as: 'pickedCharacter' })
|
||||
Pick.belongsTo(Character, { foreignKey: 'characterId', as: 'pickedCharacter' })
|
||||
|
||||
// Bind games to applications and picks
|
||||
Game.hasMany(App, { foreignKey: 'gameId', as: 'gameApplications' })
|
||||
App.belongsTo(Game, { foreignKey: 'gameId', as: 'gameApplications' })
|
||||
Game.hasMany(Pick, { foreignKey: 'gameId', as: 'gamePicks' })
|
||||
Pick.belongsTo(Game, { foreignKey: 'gameId', as: 'gamePicks' })
|
||||
|
||||
// Bind picked characters to games.
|
||||
Game.belongsToMany(Character, { through: 'Apps', as: 'characterAppliedForGame' })
|
||||
Character.belongsToMany(Game, { through: 'Apps', as: 'characterAppliedForGame' })
|
||||
Game.belongsToMany(Character, { through: 'Picks', as: 'characterPickedForGame' })
|
||||
Character.belongsToMany(Game, { through: 'Picks', as: 'characterPickedForGame' })
|
||||
Reference in New Issue
Block a user