src/model/*: added some orm entities

pull/7/head
leonnicolas 4 years ago
parent c8ad2badc2
commit be7c1a0d39
No known key found for this signature in database
GPG Key ID: 088D0743E2B65C07

@ -14,22 +14,22 @@ export class CargoBikeAPI extends DataSource {
/** /**
* Finds cargo bike by id * Finds cargo bike by id
*/ */
async findCargoBikeById ({ id, token }:{id: any, token:string}) { async findCargoBikeById ({ id }:{id: any}) {
return { return {
id, id,
name: token name: 'token'
}; };
} }
async updateBike ({ id, token, name }:{id:any, token: string, name: string }) { async updateBike ({ id, name }:{id:any, name: string }) {
const bike = new CargoBike(); const bike = new CargoBike();
bike.id = id; bike.id = id;
bike.description = token; bike.description = 'text';
bike.name = name; bike.name = name;
await this.connection.manager.save(bike); await this.connection.manager.save(bike);
return { return {
success: true, success: true,
message: token, message: 'bla',
bike: { bike: {
id, id,
name name

@ -0,0 +1,30 @@
/* eslint no-unused-vars: "off" */
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
export enum BikeEventType {
KAUF = 'Kauf',
INBETRIEBNAHME = 'Inbetriebnahme',
AUSFALL = 'Ausfall',
WARTUNG = 'Wartung'
}
@Entity()
export class BikeEvent {
@PrimaryGeneratedColumn()
id: number;
@Column()
note: string;
@Column('simple-array')
documents: string[];
@Column({
type: 'enum',
enum: BikeEventType
})
type: BikeEventType
@Column()
otherEquipment: string;
}

@ -0,0 +1,71 @@
import { Column } from 'typeorm';
export abstract class Bike {
@Column()
description: string;
@Column()
modelName: string;
@Column()
numerOfWheels: number;
@Column()
forCargo: boolean;
@Column()
forChildren: boolean;
@Column()
numberOfChildren: number;
// technical Information
@Column()
bicycleShift: string;
@Column()
isEBike: boolean;
@Column()
hasLightSystem: boolean;
@Column()
specialFeatures: string;
// dimensions and load
@Column()
hasCoverBox: boolean;
@Column()
lockable:boolean;
@Column()
boxLength: number;
@Column()
boxWidth: number;
@Column()
boxHeight: number;
@Column()
maxWeightBox: number;
@Column()
maxWeightLuggageRack: number;
@Column()
maxWeightTotal: number;
@Column()
bikeLength: number;
@Column()
bikeWidth: number;
@Column()
bikeHeight: number;
@Column()
bikeWeight: number;
}

@ -1,13 +1,67 @@
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; /* eslint no-unused-vars: "off" */
import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm';
import { Bike } from './BikeFeatures';
import { ChainSwap } from './ChainSwap';
export enum Group {
KL,
LI,
SP,
FK,
MH,
SZ,
TS,
TK
}
export enum StickerBikeNameState {
OK,
IMPROVE,
PRODUCED,
NONEED,
MISSING,
UNKNOWN
}
@Entity() @Entity()
export class CargoBike { export class CargoBike extends Bike {
@PrimaryGeneratedColumn() @PrimaryGeneratedColumn()
id: number; id: number;
@Column()
group: Group;
@Column() @Column()
name: string; name: string;
@Column() @Column()
description: string; serialNo: string;
@OneToMany(type => ChainSwap, chainSwap => chainSwap.cargoBike)
chainSwaps: ChainSwap[]
// Security information
@Column()
frameNumber: string;
@Column()
keyNoFrameLock: string;
@Column()
keyNoAXAChain: string;
@Column()
policeCodeing: string;
@Column()
adfsCoding: string;
@Column({
type: 'enum',
enum: StickerBikeNameState
})
stickerBikeNameState: StickerBikeNameState;
@Column()
note: string;
} }

@ -0,0 +1,22 @@
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm';
import { CargoBike } from './CargoBike';
@Entity()
export class ChainSwap {
@PrimaryGeneratedColumn()
id: number;
@Column()
mechanic: string;
@Column({
type: 'date'
})
time: Date;
@Column()
kexNoOldAXAChain: string;
@ManyToOne(type => CargoBike, cargoBike => cargoBike.chainSwaps)
cargoBike: CargoBike;
}

@ -0,0 +1,56 @@
import { PrimaryGeneratedColumn, Column, ManyToOne, Entity } from 'typeorm';
import { Provider } from './Provider';
@Entity()
export class ContactInformation {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
firstName: string;
@Column({
type: 'date',
nullable: true
})
retiredAt: Date;
@Column({
nullable: true
})
phoneExtern: string;
@Column({
nullable: true
})
phone2Extern: string;
@Column({
nullable: true
})
phoneIntern: string;
@Column({
nullable: true
})
phone2Intern: string;
@Column({
nullable: true
})
emailExtern: string;
@Column({
nullable: true
})
emailIntern: string;
@Column()
note: string;
@ManyToOne(type => Provider, provider => provider.contactInformation)
provider: Provider;
}

@ -0,0 +1,69 @@
import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn } from 'typeorm';
import { ContactInformation } from './ContactInformation';
@Entity()
export class Participant {
@PrimaryGeneratedColumn()
id: number;
@Column({
type: 'date'
})
start: Date;
@Column({
type: 'date'
})
end: Date;
@OneToOne(type => ContactInformation)
@JoinColumn()
contactInformation: ContactInformation;
@Column()
usernameflotte: string;
@Column()
usernameSlack: string;
@Column()
memberADFC: boolean;
@Column({
type: 'simple-array'
})
locationZIPs: string[];
@Column()
roleCoreTeam: boolean;
@Column()
roleCoordinator: boolean;
@Column()
roleEmployeADFC: boolean;
@Column()
roleMentor: boolean;
@Column()
roleAmbulance: boolean;
@Column()
roleBringer: boolean;
@Column({
type: 'date'
})
workshopMentor: Date;
@Column({
type: 'date'
})
workshopAmbulance: Date;
@Column({
nullable: true
})
reserve: string;
}

@ -0,0 +1,34 @@
/* eslint no-unused-vars: "off" */
import { PrimaryGeneratedColumn, Column, OneToMany, Entity } from 'typeorm';
import { ContactInformation } from './ContactInformation';
@Entity()
export class Provider {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
formularName: String;
@Column()
street: string;
@Column()
number: string;
@Column()
zip: string;
@Column()
registerdAt: string;
@Column()
registerNo: string;
@OneToMany(type => ContactInformation, contactInformation => contactInformation.provider)
contactInformation: ContactInformation[];
}

@ -3,18 +3,18 @@ import { GraphQLError } from 'graphql';
export default { export default {
Query: { Query: {
CargobikeById: (_: any, { id, token }:{id: any, token: string}, { dataSources, req }:{dataSources: any, req: any }) => { CargobikeById: (_: any, { id }:{id: any}, { dataSources, req }:{dataSources: any, req: any }) => {
if (req.permissions.includes(Permission.ReadBike)) { if (req.permissions.includes(Permission.ReadBike)) {
return dataSources.cargoBikeAPI.findCargoBikeById({ id, token }); return dataSources.cargoBikeAPI.findCargoBikeById({ id });
} else { } else {
throw new GraphQLError('Insufficient Permissions'); throw new GraphQLError('Insufficient Permissions');
} }
} }
}, },
Mutation: { Mutation: {
addBike: (_: any, { id, token, name }:{id: any, token: string, name:string}, { dataSources, req }:{dataSources: any, req: any }) => { addBike: (_: any, { id, name }:{id: any, name:string}, { dataSources, req }:{dataSources: any, req: any }) => {
if (req.permissions.includes(Permission.WriteBike)) { if (req.permissions.includes(Permission.WriteBike)) {
return dataSources.cargoBikeAPI.updateBike({ id, token, name }); return dataSources.cargoBikeAPI.updateBike({ id, name });
} else { } else {
throw new GraphQLError('Insufficient Permissions'); throw new GraphQLError('Insufficient Permissions');
} }

@ -15,7 +15,7 @@ type CargoBike {
forCargo: Boolean forCargo: Boolean
forChildren: Boolean forChildren: Boolean
numberOfChildren: Int numberOfChildren: Int
serialno: String serialNo: String
""" """
Safety is a custom type, that stores information about security features. Safety is a custom type, that stores information about security features.
TODO: Should this be calles Security? TODO: Should this be calles Security?
@ -38,9 +38,11 @@ type CargoBike {
stickerBikeNameState: StickerBikeNameState stickerBikeNameState: StickerBikeNameState
note: String note: String
provider: Provider provider: Provider
coordinator: Coordinator coordinator: Participants
insuranceData: InsuranceData insuranceData: InsuranceData
loantimes: [LoanTimes] loantimes: [LoanTimes]
"null if not locked by other user"
lockedBy: ID
} }
type InsuranceData { type InsuranceData {
@ -50,12 +52,6 @@ type InsuranceData {
name: String name: String
} }
type Coordinator {
id:ID!
contactInformation: ContactInformation!
note: String
corgoBikes: [CargoBike]!
}
enum Group{ enum Group{
KL KL
@ -80,7 +76,7 @@ type BikeModel {
technicalEquipment: TechnicalEquipment! technicalEquipment: TechnicalEquipment!
} }
type ActiveMentor { type Participants {
id: ID! id: ID!
start: Date! start: Date!
end: Date! end: Date!
@ -96,7 +92,7 @@ type ActiveMentor {
Wahr, wenn die Person Pate ist. Wahr, wenn die Person Pate ist.
""" """
roleMentor: Boolean! roleMentor: Boolean!
roleAmbulanz: Boolean! roleAmbulance: Boolean!
roleBringer: Boolean! roleBringer: Boolean!
"Date of workshop to become Mentor dt. Pate" "Date of workshop to become Mentor dt. Pate"
workshopMentor: Date workshopMentor: Date
@ -296,13 +292,13 @@ type Address {
} }
type Query { type Query {
CargobikeById(token:String!,id:ID!): CargoBike CargobikeById(id:ID!): CargoBike
Cargobikes(token:String!): [CargoBike]! Cargobikes(token:String!): [CargoBike]!
CargobikesByProvider(token:String!,providerId:ID!): [CargoBike]! CargobikesByProvider(token:String!,providerId:ID!): [CargoBike]!
ProviderById(token:String!,id:ID!): Provider ProviderById(token:String!,id:ID!): Provider
Providers(token:String!): [Provider]! Providers(token:String!): [Provider]!
ActiveMentorById(token:String!,id:ID!): ActiveMentor ParticipantsById(token:String!,id:ID!): Participants
ActiveMentors(token:String!): [ActiveMentor]! Participantss(token:String!): [ Participants]!
lendingStationById(token:String!, id:ID!): LendingStation lendingStationById(token:String!, id:ID!): LendingStation
lendingStations(token:String!): [LendingStation]! lendingStations(token:String!): [LendingStation]!
contactInformation(token:String!): [ContactInformation]! contactInformation(token:String!): [ContactInformation]!
@ -345,14 +341,13 @@ input CargoBikeInput {
stickerBikeNameState: String stickerBikeNameState: String
note: String note: String
provider: String provider: String
coordinator: String
insuranceData: String insuranceData: String
} }
type Mutation { type Mutation {
"for testing" "for testing"
addBike(id: ID!, token: String!, name: String): UpdateBikeResponse! addBike(id: ID!, name: String): UpdateBikeResponse!
"if id: null, then new bike will be created, else old bike will be updated" "if id: null, then new bike will be created, else old bike will be updated"
cargoBike(token:String!,cargoBike: CargoBikeInput): UpdateBikeResponse! cargoBike(cargoBike: CargoBikeInput): UpdateBikeResponse!
} }
`; `;

Loading…
Cancel
Save