mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-06-17 02:29:10 +00:00
lerna: split up bulk of packages
This commit is contained in:
parent
cb0b1d2410
commit
47a2e5694e
90 changed files with 0 additions and 0 deletions
14
packages/roleypoly-server/models/AuthChallenge.js
Normal file
14
packages/roleypoly-server/models/AuthChallenge.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
// @flow
|
||||
import type Sequelize, { DataTypes as DT } from 'sequelize'
|
||||
|
||||
export default (sql: Sequelize, DataTypes: DT) => {
|
||||
return sql.define('auth_challenge', {
|
||||
userId: DataTypes.TEXT,
|
||||
issuedAt: DataTypes.DATE,
|
||||
type: DataTypes.ENUM('dm', 'other'),
|
||||
human: { type: DataTypes.TEXT, unique: true },
|
||||
magic: { type: DataTypes.TEXT, unique: true }
|
||||
}, {
|
||||
indexes: [ { fields: ['userId'] } ]
|
||||
})
|
||||
}
|
33
packages/roleypoly-server/models/Server.js
Normal file
33
packages/roleypoly-server/models/Server.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
// @flow
|
||||
import type Sequelize, { DataTypes as DT } from 'sequelize'
|
||||
|
||||
export type Category = {
|
||||
hidden: boolean,
|
||||
name: string,
|
||||
roles: string[],
|
||||
_roles?: any,
|
||||
type: 'single' | 'multi' | string
|
||||
}
|
||||
|
||||
export type ServerModel = {
|
||||
id: string,
|
||||
categories: {
|
||||
[uuid: string]: Category
|
||||
},
|
||||
message: string
|
||||
}
|
||||
|
||||
export default (sql: Sequelize, DataTypes: DT) => {
|
||||
return sql.define('server', {
|
||||
id: { // discord snowflake
|
||||
type: DataTypes.TEXT,
|
||||
primaryKey: true
|
||||
},
|
||||
categories: {
|
||||
type: DataTypes.JSON
|
||||
},
|
||||
message: {
|
||||
type: DataTypes.TEXT
|
||||
}
|
||||
})
|
||||
}
|
7
packages/roleypoly-server/models/Session.js
Normal file
7
packages/roleypoly-server/models/Session.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
module.exports = (sequelize, DataTypes) => {
|
||||
return sequelize.define('session', {
|
||||
id: { type: DataTypes.TEXT, primaryKey: true },
|
||||
maxAge: DataTypes.BIGINT,
|
||||
data: DataTypes.JSONB
|
||||
})
|
||||
}
|
47
packages/roleypoly-server/models/index.js
Normal file
47
packages/roleypoly-server/models/index.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
// @flow
|
||||
import logger from '../logger'
|
||||
import glob from 'glob'
|
||||
import path from 'path'
|
||||
import type Sequelize, { Model } from 'sequelize'
|
||||
|
||||
const log = logger(__filename)
|
||||
|
||||
export type Models = {
|
||||
[modelName: string]: Model<any> & {
|
||||
__associations: (models: Models) => void,
|
||||
__instanceMethods: (model: Model<any>) => void,
|
||||
}
|
||||
}
|
||||
|
||||
export default (sql: Sequelize): Models => {
|
||||
const models: Models = {}
|
||||
const modelFiles = glob.sync('./models/**/!(index).js')
|
||||
log.debug('found models', modelFiles)
|
||||
|
||||
modelFiles.forEach((v) => {
|
||||
let name = path.basename(v).replace('.js', '')
|
||||
if (v === './models/index.js') {
|
||||
log.debug('index.js hit, skipped')
|
||||
return
|
||||
}
|
||||
try {
|
||||
log.debug('importing..', v.replace('models/', ''))
|
||||
let model = sql.import(v.replace('models/', ''))
|
||||
models[name] = model
|
||||
} catch (err) {
|
||||
log.fatal('error importing model ' + v, err)
|
||||
process.exit(-1)
|
||||
}
|
||||
})
|
||||
|
||||
Object.keys(models).forEach((v) => {
|
||||
if (models[v].hasOwnProperty('__associations')) {
|
||||
models[v].__associations(models)
|
||||
}
|
||||
if (models[v].hasOwnProperty('__instanceMethods')) {
|
||||
models[v].__instanceMethods(models[v])
|
||||
}
|
||||
})
|
||||
|
||||
return models
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue