type-defs.ts: added types and queries

pull/2/head
leonnicolas 4 years ago
parent 85e1d95631
commit dc36ad431a
No known key found for this signature in database
GPG Key ID: 088D0743E2B65C07

@ -1,6 +1,7 @@
{ {
"root": true,
"env": { "env": {
"browser": true "node": true
}, },
"extends": [ "extends": [
"standard" "standard"

10
package-lock.json generated

@ -260,11 +260,6 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"@types/bluebird": {
"version": "3.5.32",
"resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.32.tgz",
"integrity": "sha512-dIOxFfI0C+jz89g6lQ+TqhGgPQ0MxSnh/E4xuC0blhFtyW269+mPG5QeLgbdwst/LvdP8o1y0o/Gz5EHXLec/g=="
},
"@types/body-parser": { "@types/body-parser": {
"version": "1.19.0", "version": "1.19.0",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
@ -444,11 +439,6 @@
"@types/mime": "*" "@types/mime": "*"
} }
}, },
"@types/validator": {
"version": "13.1.0",
"resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.0.tgz",
"integrity": "sha512-gHUHI6pJaANIO2r6WcbT7+WMgbL9GZooR4tWpuBOETpDIqFNxwaJluE+6rj6VGYe8k6OkfhbHz2Fkm8kl06Igw=="
},
"@types/ws": { "@types/ws": {
"version": "7.2.6", "version": "7.2.6",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.6.tgz", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.6.tgz",

@ -6,6 +6,7 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"start": "node dist/index.js", "start": "node dist/index.js",
"lint": "eslint --config .eslintrc.json --fix src/**/*.ts",
"start:ci": "node dist/index.js" "start:ci": "node dist/index.js"
}, },
"keywords": [], "keywords": [],
@ -29,8 +30,6 @@
"typescript": "^4.0.2" "typescript": "^4.0.2"
}, },
"dependencies": { "dependencies": {
"@types/bluebird": "^3.5.32",
"@types/validator": "^13.1.0",
"apollo-server": "^2.17.0", "apollo-server": "^2.17.0",
"graphql": "^15.3.0", "graphql": "^15.3.0",
"pg": "^8.3.3", "pg": "^8.3.3",

@ -6,10 +6,11 @@ import { CargoBike } from '../../model/CargoBike'
*/ */
export class CargoBikeAPI extends DataSource { export class CargoBikeAPI extends DataSource {
connection : Connection connection : Connection
constructor(){ constructor () {
super() super()
this.connection = getConnection() this.connection = getConnection()
} }
/** /**
* Finds cargo bike by id * Finds cargo bike by id
*/ */

@ -1,6 +1,6 @@
export default { export default {
Query: { Query: {
cargobike: (_: any, { id, token }:{id: any, token: string}, { dataSources }:{dataSources: any}) => CargobikeById: (_: any, { id, token }:{id: any, token: string}, { dataSources }:{dataSources: any}) =>
dataSources.cargoBikeAPI.findCargoBikeById({ id, token }) dataSources.cargoBikeAPI.findCargoBikeById({ id, token })
}, },
Mutation: { Mutation: {

@ -40,6 +40,7 @@ type CargoBike {
provider: Provider provider: Provider
coordinator: Coordinator coordinator: Coordinator
insuranceData: InsuranceData insuranceData: InsuranceData
loantimes: [LoanTimes]
} }
type InsuranceData { type InsuranceData {
@ -55,6 +56,7 @@ type Coordinator {
note: String note: String
corgoBikes: [CargoBike]! corgoBikes: [CargoBike]!
} }
enum Group{ enum Group{
KL KL
LI LI
@ -65,6 +67,7 @@ enum Group{
TS TS
TK TK
} }
""" """
The BikeModel can be used for instantiate new bikes with a given model. The BikeModel can be used for instantiate new bikes with a given model.
It should only be used to fill in default values. It should only be used to fill in default values.
@ -74,6 +77,7 @@ type BikeModel {
id: ID! id: ID!
name: String name: String
dimensionsAndLoad: DimensionsAndLoad! dimensionsAndLoad: DimensionsAndLoad!
technicalEquipment: TechnicalEquipment!
} }
type ActiveMentor { type ActiveMentor {
@ -81,6 +85,31 @@ type ActiveMentor {
start: Date! start: Date!
end: Date! end: Date!
mentor: ContactInformation! mentor: ContactInformation!
usernamefLotte: String
usernameSlack: String
memberADFC: Boolean!
locationZIPs: [String]
roleCoreTeam: Boolean!
roleCoordinator: Boolean!
roleEmployeADFC: Boolean!
"""
Wahr, wenn die Person Pate ist.
"""
roleMentor: Boolean!
roleAmbulanz: Boolean!
roleBringer: Boolean!
"Date of workshop to become Mentor dt. Pate"
workshopMentor: Date
"Date of last Erste Hilfe Kurs?"
workshopAmbulance: Date
"""
Note the kommentierte Infodaten Tabelle.
This value is calculated form other values.
It is true, if the person is not on the black list and not retired
and is either Mentor dt. Pate or Partner Mentor dt. Partnerpate for at least one bike.
"""
distributedActiveBikeParte: Boolean!
reserve: String
} }
type Taxes { type Taxes {
@ -102,6 +131,7 @@ type ChainSwap {
timeOfSwap: Date timeOfSwap: Date
keyNumberOldAXAChain: String keyNumberOldAXAChain: String
} }
""" """
This type represents a piece of equipment that represents a real physical object. This type represents a piece of equipment that represents a real physical object.
The object must be unique. So it is possible to tell it apart from similar objects by a serial number. The object must be unique. So it is possible to tell it apart from similar objects by a serial number.
@ -195,26 +225,25 @@ enum StickerBikeNameState {
UNKNOWN UNKNOWN
} }
"(dt. Anbieter)"
type Provider { type Provider {
id: ID! id: ID!
name: String! name: String!
formularName: String formularName: String
address: String address: Address
"If Club, at what court registered" "If Club, at what court registered"
registeredAt: String registeredAt: String
registerNumber: String registerNumber: String
providerContactPerson: [ContactInformation] providerContactPerson: [ContactInformation]
email: String
phone: String
isPrivatePerson: Boolean! isPrivatePerson: Boolean!
organisations: Organisation organisation: Organisation
cargoBikes: [CargoBike]! cargoBikes: [CargoBike]!
} }
type ContactInformation { type ContactInformation {
id: ID! id: ID!
name: String! name: String!
firstName: String! firstName: String
retiredAt: Date retiredAt: Date
phoneExtern: String phoneExtern: String
phone2Extern: String phone2Extern: String
@ -222,42 +251,61 @@ type ContactInformation {
phone2Intern: String phone2Intern: String
emailExtern: String emailExtern: String
emailIntern: String emailIntern: String
usernamefLotte: String
usernameSlack: String
memberADFC: Boolean!
locationZIPs: [String]
roleCoreTeam: Boolean!
roleCoordinator: Boolean!
roleEmployeADFC: Boolean!
"""
Wahr, wenn die Person Pate ist.
"""
roleMentor: Boolean!
roleAmbulanz: Boolean!
roleBringer: Boolean!
"Date of workshop to become Mentor dt. Pate"
workshopMentor: Date
"Date of last Erste Hilfe Kurs?"
workshopAmbulance: Date
note: String note: String
"""
Note the kommentierte Infodaten Tabelle.
This value is calculated form other values.
It is true, if the person is not on the black list and not retired
and is either Mentor dt. Pate or Partner Mentor dt. Partnerpate for at least one bike.
"""
distributedActiveBikeParte: Boolean!
reserve: String
} }
type Organisation{ type Organisation{
id: ID! id: ID!
"(dt. Ausleihstation)"
lendinglocation: [LendingStation]
"registration number of association" "registration number of association"
associationNo: String associationNo: String
otherdata: String
}
"(dt. Standort)"
type LendingStation {
id: ID!
contactInformation: [ContactInformation]!
address: Address
loanTimes: LoanTimes
loanPeriods: [LoanPeriod]!
}
"(dt. Ausleihzeiten)"
type LoanTimes {
notes: String
}
"(dt. Zeitscheibe)"
type LoanPeriod{
id: ID!
from: Date!
to: Date
note: String
lendingstation: LendingStation!
cargobike: CargoBike!
}
type Address {
street: String
number: String
zip: String
} }
type Query { type Query {
cargobike(token:String!,id:ID!): CargoBike CargobikeById(token:String!,id:ID!): CargoBike
Cargobikes(token:String!): [CargoBike]!
CargobikesByProvider(token:String!,providerId:ID!): [CargoBike]!
ProviderById(token:String!,id:ID!): Provider
Providers(token:String!): [Provider]!
ActiveMentorById(token:String!,id:ID!): ActiveMentor
ActiveMentors(token:String!): [ActiveMentor]!
lendingStationById(token:String!, id:ID!): LendingStation
lendingStations(token:String!): [LendingStation]!
contactInformation(token:String!): [ContactInformation]!
} }
type UpdateBikeResponse { type UpdateBikeResponse {
@ -266,9 +314,45 @@ type UpdateBikeResponse {
bike: CargoBike bike: CargoBike
} }
"for testing" input CargoBikeInput {
"if null, then new bike will be created, else old bike will be updated"
id: ID
"see column A in info tabelle"
group: Group
name: String
modelName: String
numberOfWheels: Int
forCargo: Boolean
forChildren: Boolean
numberOfChildren: Int
serialno: String
"""
Safety is a custom type, that stores information about security features.
TODO: Should this be calles Security?
"""
security: String
"""
Does not refere to an extra table in the database.
"""
technicalEquipment: String
"""
Does not refere to an extra table in the database.
"""
dimensionsAndLoad: String
"Refers to equipment that is not unique. See kommentierte info tabelle -> Fragen -> Frage 2"
otherEquipment: String
"Sticker State"
stickerBikeNameState: String
note: String
provider: String
coordinator: String
insuranceData: String
}
type Mutation { type Mutation {
addBike(id: ID!, token: String!, name: String):UpdateBikeResponse "for testing"
addBike(id: ID!, token: String!, name: String): UpdateBikeResponse!
"if id: null, then new bike will be created, else old bike will be updated"
cargoBike(token:String!,cargoBike: CargoBikeInput): UpdateBikeResponse!
} }
` `

Loading…
Cancel
Save