before frontend login

This commit is contained in:
peter
2019-11-06 11:15:00 +01:00
parent 9d6681843b
commit 5466a3e8e8
57 changed files with 1013 additions and 2085 deletions
@@ -0,0 +1,95 @@
import { TableDefiniton, User, _Rank, Raid, Signup, RaidManagerFeatureIfc } from "../../Types/Types";
import { FrontworkAdmin } from "../../Admin/Admin";
import { FrontworkComponent } from "../../Types/FrontworkComponent";
export class RaidManager
implements FrontworkComponent<RaidManagerFeatureIfc>{
name = "RaidManager";
admin: FrontworkAdmin
exportRPCs = () => []
exportRPCFeatures() {
return [{
name: 'manageRaid' as 'manageRaid',
exportRPCs: () => [{
name: 'createRaid' as 'createRaid',
call: async (raid:Raid) => await this.createRaid(raid)
},{
name: 'addSignup' as 'addSignup',
call: async(signup: Signup) => await this.addSignup(signup)
},{
name: 'removeSignup' as 'removeSignup',
call: async(signup: Signup) => await this.removeSignup(signup)
}]
},{
name: 'signup' as 'signup',
exportRPCs: () => [{
name: 'getRaids' as 'getRaids',
call: async () => await this.getRaids()
},{
name: 'getSingups' as 'getSingups',
call: async(raid: Raid) => await this.getSignups(raid)
},{
name: 'sign' as 'sign',
call: async(user:User, raid:Raid) => await this.sign(user, raid)
}]
},]
}
getTableDefinitions(): TableDefiniton[] {
return [
{
name: 'raids',
tableBuilder: (table) => {
table.increments('id').primary()
table.dateTime('start').notNullable()
table.string('description').notNullable()
table.string('title').notNullable()
table.integer('minrank').notNullable()
}
},{
name: 'signups',
tableBuilder: (table) => {
table.integer('raid_id').primary()
table.foreign('raid_id').references('id').inTable('raids')
table.integer('user_id').primary()
table.foreign('user_id').references('id').inTable('users')
}
}
]
}
createRaid = async (raid:Raid) => await this.admin
.knex('raids')
.insert(raid)
addSignup = async (signup: Signup) => await this.admin
.knex('signups')
.insert(signup)
removeSignup = async (signup: Signup) => await this.admin
.knex('signups')
.where({
raid_id: signup.raid_id,
user_id: signup.user_id
})
.delete()
getRaids = async () => await this.admin.knex
.select('*')
.from('raids')
getSignups = async (raid:Raid) => await this.admin.knex
.select('*')
.from('signups')
.where('raid_id', '=', raid.id!)
sign = async (user:User, raid:Raid) => await this.admin
.knex('signups')
.insert({
raid_id: raid.id!,
user_id: user.id!
})
}