|
|
|
@ -21,13 +21,13 @@ import { gql } from 'apollo-server-express';
|
|
|
|
|
|
|
|
|
|
export default gql`
|
|
|
|
|
|
|
|
|
|
"timestamp object YYYY-MM-ddThh:mm:ss.sssZ"
|
|
|
|
|
scalar Date
|
|
|
|
|
"only time hh-mm-ss"
|
|
|
|
|
scalar Time
|
|
|
|
|
"timestamp object YYYY-MM-ddThh:mm:ss.sssZ"
|
|
|
|
|
scalar Date
|
|
|
|
|
"only time hh-mm-ss"
|
|
|
|
|
scalar Time
|
|
|
|
|
|
|
|
|
|
"The CargoBike type is central to the graph. You could call it the root."
|
|
|
|
|
type CargoBike {
|
|
|
|
|
"The CargoBike type is central to the graph. You could call it the root."
|
|
|
|
|
type CargoBike {
|
|
|
|
|
id: ID!
|
|
|
|
|
"see column A in info tabelle"
|
|
|
|
|
group: Group
|
|
|
|
@ -71,12 +71,12 @@ type CargoBike {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
if you want to add bike to a lending station, create a new timeFrame with to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input CargoBikeCreateInput {
|
|
|
|
|
"""
|
|
|
|
|
if you want to add bike to a lending station, create a new timeFrame with to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input CargoBikeCreateInput {
|
|
|
|
|
"see column A in info tabelle"
|
|
|
|
|
group: Group!
|
|
|
|
|
name: String!
|
|
|
|
@ -106,12 +106,12 @@ input CargoBikeCreateInput {
|
|
|
|
|
providerId: ID
|
|
|
|
|
insuranceData: InsuranceDataCreateInput!
|
|
|
|
|
taxes: TaxesCreateInput!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
if you want to add bike to a lending station, create a new timeFrame with to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input CargoBikeUpdateInput {
|
|
|
|
|
"""
|
|
|
|
|
if you want to add bike to a lending station, create a new timeFrame with to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input CargoBikeUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
"see column A in info tabelle"
|
|
|
|
|
group: Group
|
|
|
|
@ -147,9 +147,9 @@ input CargoBikeUpdateInput {
|
|
|
|
|
taxes: TaxesUpdateInput
|
|
|
|
|
"will keep Bike locked if set to true, default = false"
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type InsuranceData {
|
|
|
|
|
type InsuranceData {
|
|
|
|
|
"""
|
|
|
|
|
Eventually, this field will become an enum or a separate data table and user can choose from a pool of insurance companies.
|
|
|
|
|
"""
|
|
|
|
@ -173,9 +173,9 @@ type InsuranceData {
|
|
|
|
|
"""
|
|
|
|
|
projectAllowance: String
|
|
|
|
|
notes: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input InsuranceDataCreateInput {
|
|
|
|
|
input InsuranceDataCreateInput {
|
|
|
|
|
"""
|
|
|
|
|
Eventually, this field will become an enum or a separate data table and user can choose from a pool of insurance companies.
|
|
|
|
|
"""
|
|
|
|
@ -199,9 +199,9 @@ input InsuranceDataCreateInput {
|
|
|
|
|
"""
|
|
|
|
|
projectAllowance: String
|
|
|
|
|
notes: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input InsuranceDataUpdateInput {
|
|
|
|
|
input InsuranceDataUpdateInput {
|
|
|
|
|
"""
|
|
|
|
|
Eventually, this field will become an enum or a separate data table and user can choose from a pool of insurance companies.
|
|
|
|
|
"""
|
|
|
|
@ -225,10 +225,10 @@ input InsuranceDataUpdateInput {
|
|
|
|
|
"""
|
|
|
|
|
projectAllowance: String
|
|
|
|
|
notes: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"How are the dimensions and how much weight can handle a bike. This data is merged in the CargoBike table and the BikeModel table."
|
|
|
|
|
type DimensionsAndLoad {
|
|
|
|
|
"How are the dimensions and how much weight can handle a bike. This data is merged in the CargoBike table and the BikeModel table."
|
|
|
|
|
type DimensionsAndLoad {
|
|
|
|
|
hasCoverBox: Boolean!
|
|
|
|
|
"cover box can be locked"
|
|
|
|
|
lockable: Boolean!
|
|
|
|
@ -242,9 +242,9 @@ type DimensionsAndLoad {
|
|
|
|
|
bikeWidth: Float
|
|
|
|
|
bikeHeight: Float
|
|
|
|
|
bikeWeight: Float
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input DimensionsAndLoadCreateInput {
|
|
|
|
|
input DimensionsAndLoadCreateInput {
|
|
|
|
|
hasCoverBox: Boolean!
|
|
|
|
|
lockable: Boolean!
|
|
|
|
|
boxLength: Float!
|
|
|
|
@ -257,9 +257,9 @@ input DimensionsAndLoadCreateInput {
|
|
|
|
|
bikeWidth: Float
|
|
|
|
|
bikeHeight: Float
|
|
|
|
|
bikeWeight: Float
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input DimensionsAndLoadUpdateInput {
|
|
|
|
|
input DimensionsAndLoadUpdateInput {
|
|
|
|
|
hasCoverBox: Boolean
|
|
|
|
|
lockable: Boolean
|
|
|
|
|
boxLength: Float
|
|
|
|
@ -272,73 +272,73 @@ input DimensionsAndLoadUpdateInput {
|
|
|
|
|
bikeWidth: Float
|
|
|
|
|
bikeHeight: Float
|
|
|
|
|
bikeWeight: Float
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
Some Technical Info about the bike.
|
|
|
|
|
This should be 1-1 Relation with the CargoBike.
|
|
|
|
|
So no id needed for mutation. One Mutation for the CargoBike will be enough.
|
|
|
|
|
"""
|
|
|
|
|
type TechnicalEquipment {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
Some Technical Info about the bike.
|
|
|
|
|
This should be 1-1 Relation with the CargoBike.
|
|
|
|
|
So no id needed for mutation. One Mutation for the CargoBike will be enough.
|
|
|
|
|
"""
|
|
|
|
|
type TechnicalEquipment {
|
|
|
|
|
bicycleShift: String!
|
|
|
|
|
isEBike: Boolean!
|
|
|
|
|
hasLightSystem: Boolean!
|
|
|
|
|
specialFeatures: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input TechnicalEquipmentCreateInput {
|
|
|
|
|
input TechnicalEquipmentCreateInput {
|
|
|
|
|
bicycleShift: String!
|
|
|
|
|
isEBike: Boolean!
|
|
|
|
|
hasLightSystem: Boolean!
|
|
|
|
|
specialFeatures: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input TechnicalEquipmentUpdateInput {
|
|
|
|
|
input TechnicalEquipmentUpdateInput {
|
|
|
|
|
bicycleShift: String
|
|
|
|
|
isEBike: Boolean
|
|
|
|
|
hasLightSystem: Boolean
|
|
|
|
|
specialFeatures: String
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
The Security Info about the bike.
|
|
|
|
|
his should be 1-1 Relation with the CargoBike.
|
|
|
|
|
So no id needed for mutation. One Mutation for the CargoBike will be enough.
|
|
|
|
|
"""
|
|
|
|
|
type Security {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
The Security Info about the bike.
|
|
|
|
|
his should be 1-1 Relation with the CargoBike.
|
|
|
|
|
So no id needed for mutation. One Mutation for the CargoBike will be enough.
|
|
|
|
|
"""
|
|
|
|
|
type Security {
|
|
|
|
|
frameNumber: String!
|
|
|
|
|
keyNumberFrameLock: String
|
|
|
|
|
keyNumberAXAChain: String
|
|
|
|
|
policeCoding: String
|
|
|
|
|
adfcCoding: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input SecurityCreateInput {
|
|
|
|
|
input SecurityCreateInput {
|
|
|
|
|
frameNumber: String!
|
|
|
|
|
keyNumberFrameLock: String
|
|
|
|
|
keyNumberAXAChain: String
|
|
|
|
|
policeCoding: String
|
|
|
|
|
adfcCoding: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input SecurityUpdateInput {
|
|
|
|
|
input SecurityUpdateInput {
|
|
|
|
|
frameNumber: String
|
|
|
|
|
keyNumberFrameLock: String
|
|
|
|
|
keyNumberAXAChain: String
|
|
|
|
|
policeCoding: String
|
|
|
|
|
adfcCoding: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum StickerBikeNameState {
|
|
|
|
|
enum StickerBikeNameState {
|
|
|
|
|
OK
|
|
|
|
|
IMPROVE
|
|
|
|
|
PRODUCED
|
|
|
|
|
NONEED
|
|
|
|
|
MISSING
|
|
|
|
|
UNKNOWN
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum Group{
|
|
|
|
|
enum Group{
|
|
|
|
|
KL
|
|
|
|
|
LI
|
|
|
|
|
SP
|
|
|
|
@ -347,9 +347,12 @@ enum Group{
|
|
|
|
|
SZ
|
|
|
|
|
TS
|
|
|
|
|
TK
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Participant {
|
|
|
|
|
"""
|
|
|
|
|
A participant in the organization
|
|
|
|
|
"""
|
|
|
|
|
type Participant {
|
|
|
|
|
id: ID!
|
|
|
|
|
start: Date!
|
|
|
|
|
end: Date
|
|
|
|
@ -373,9 +376,9 @@ type Participant {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input ParticipantCreateInput {
|
|
|
|
|
input ParticipantCreateInput {
|
|
|
|
|
"if not set, CURRENT_DATE will be used"
|
|
|
|
|
start: Date
|
|
|
|
|
end: Date
|
|
|
|
@ -389,9 +392,9 @@ input ParticipantCreateInput {
|
|
|
|
|
"default: false"
|
|
|
|
|
memberCoreTeam: Boolean
|
|
|
|
|
workshopIds: [ID]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input ParticipantUpdateInput {
|
|
|
|
|
input ParticipantUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
"if not set, CURRENT_DATE will be used"
|
|
|
|
|
start: Date
|
|
|
|
@ -407,9 +410,12 @@ input ParticipantUpdateInput {
|
|
|
|
|
memberCoreTeam: Boolean
|
|
|
|
|
workshopIds: [ID]
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Workshop {
|
|
|
|
|
"""
|
|
|
|
|
A workshop event
|
|
|
|
|
"""
|
|
|
|
|
type Workshop {
|
|
|
|
|
id: ID!
|
|
|
|
|
title: String!
|
|
|
|
|
description: String!
|
|
|
|
@ -423,18 +429,18 @@ type Workshop {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input WorkshopCreateInput {
|
|
|
|
|
input WorkshopCreateInput {
|
|
|
|
|
title: String!
|
|
|
|
|
description: String
|
|
|
|
|
date: Date!
|
|
|
|
|
workshopTypeId: ID!
|
|
|
|
|
trainer1Id: ID!
|
|
|
|
|
trainer2Id: ID
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input WorkshopUpdateInput {
|
|
|
|
|
input WorkshopUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
title: String
|
|
|
|
|
description: String
|
|
|
|
@ -443,9 +449,9 @@ input WorkshopUpdateInput {
|
|
|
|
|
trainer1Id: ID
|
|
|
|
|
trainer2Id: ID
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type WorkshopType {
|
|
|
|
|
type WorkshopType {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
isLocked: Boolean!
|
|
|
|
@ -453,18 +459,18 @@ type WorkshopType {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input WorkshopTypeCreateInput {
|
|
|
|
|
input WorkshopTypeCreateInput {
|
|
|
|
|
name: String!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input WorkshopTypeUpdateInput {
|
|
|
|
|
input WorkshopTypeUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type EngagementType {
|
|
|
|
|
type EngagementType {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
description: String!
|
|
|
|
@ -473,21 +479,21 @@ type EngagementType {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EngagementTypeCreateInput {
|
|
|
|
|
input EngagementTypeCreateInput {
|
|
|
|
|
name: String!
|
|
|
|
|
description: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EngagementTypeUpdateInput {
|
|
|
|
|
input EngagementTypeUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String
|
|
|
|
|
description: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Engagement {
|
|
|
|
|
type Engagement {
|
|
|
|
|
id: ID!
|
|
|
|
|
engagementType: EngagementType!
|
|
|
|
|
from: Date!
|
|
|
|
@ -499,9 +505,9 @@ type Engagement {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EngagementCreateInput {
|
|
|
|
|
input EngagementCreateInput {
|
|
|
|
|
engagementTypeId: ID!
|
|
|
|
|
"will use CURRENT_DATE if not set"
|
|
|
|
|
from: Date
|
|
|
|
@ -509,8 +515,8 @@ input EngagementCreateInput {
|
|
|
|
|
to: Date
|
|
|
|
|
participantId: ID!
|
|
|
|
|
cargoBikeId: ID!
|
|
|
|
|
}
|
|
|
|
|
input EngagementUpdateInput {
|
|
|
|
|
}
|
|
|
|
|
input EngagementUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
engagementTypeId: ID
|
|
|
|
|
from: Date
|
|
|
|
@ -518,33 +524,33 @@ input EngagementUpdateInput {
|
|
|
|
|
participantId: ID
|
|
|
|
|
cargoBikeId: ID
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Taxes {
|
|
|
|
|
type Taxes {
|
|
|
|
|
costCenter: String!
|
|
|
|
|
organisationArea: OrganisationArea
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input TaxesCreateInput {
|
|
|
|
|
input TaxesCreateInput {
|
|
|
|
|
costCenter: String!
|
|
|
|
|
organisationArea: OrganisationArea
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input TaxesUpdateInput {
|
|
|
|
|
input TaxesUpdateInput {
|
|
|
|
|
costCenter: String
|
|
|
|
|
organisationArea: OrganisationArea
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum OrganisationArea {
|
|
|
|
|
enum OrganisationArea {
|
|
|
|
|
IB
|
|
|
|
|
ZB
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
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.
|
|
|
|
|
"""
|
|
|
|
|
type Equipment {
|
|
|
|
|
"""
|
|
|
|
|
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.
|
|
|
|
|
"""
|
|
|
|
|
type Equipment {
|
|
|
|
|
id: ID!
|
|
|
|
|
serialNo: String!
|
|
|
|
|
title: String!
|
|
|
|
@ -555,16 +561,16 @@ type Equipment {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EquipmentCreateInput {
|
|
|
|
|
input EquipmentCreateInput {
|
|
|
|
|
serialNo: String!
|
|
|
|
|
title: String!
|
|
|
|
|
description: String
|
|
|
|
|
cargoBikeId: ID
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EquipmentUpdateInput {
|
|
|
|
|
input EquipmentUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
serialNo: String
|
|
|
|
|
title: String
|
|
|
|
@ -572,9 +578,13 @@ input EquipmentUpdateInput {
|
|
|
|
|
cargoBikeId: ID
|
|
|
|
|
"will keep Bike locked if set to true, default = false"
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type EquipmentType {
|
|
|
|
|
"""
|
|
|
|
|
A type of equipment that is not being tracked but can be assigned
|
|
|
|
|
to any bike.
|
|
|
|
|
"""
|
|
|
|
|
type EquipmentType {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
description: String!
|
|
|
|
@ -583,22 +593,22 @@ type EquipmentType {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EquipmentTypeCreateInput {
|
|
|
|
|
input EquipmentTypeCreateInput {
|
|
|
|
|
name: String
|
|
|
|
|
description: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input EquipmentTypeUpdateInput {
|
|
|
|
|
input EquipmentTypeUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String
|
|
|
|
|
description: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"An Event is a point in time, when the state of the bike somehow changed."
|
|
|
|
|
type BikeEvent {
|
|
|
|
|
"An Event is a point in time, when the state of the bike somehow changed."
|
|
|
|
|
type BikeEvent {
|
|
|
|
|
id: ID!
|
|
|
|
|
bikeEventType: BikeEventType!
|
|
|
|
|
cargoBike: CargoBike!
|
|
|
|
@ -609,16 +619,16 @@ type BikeEvent {
|
|
|
|
|
"""
|
|
|
|
|
Path to documents
|
|
|
|
|
"""
|
|
|
|
|
documents: [String]!
|
|
|
|
|
documents: [String!]!
|
|
|
|
|
remark: String
|
|
|
|
|
isLocked: Boolean!
|
|
|
|
|
isLockedByMe: Boolean!
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input BikeEventCreateInput {
|
|
|
|
|
input BikeEventCreateInput {
|
|
|
|
|
bikeEventTypeId: ID!
|
|
|
|
|
cargoBikeId: ID!
|
|
|
|
|
responsibleId: ID
|
|
|
|
@ -630,9 +640,9 @@ input BikeEventCreateInput {
|
|
|
|
|
"""
|
|
|
|
|
documents: [String]
|
|
|
|
|
remark: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input BikeEventUpdateInput {
|
|
|
|
|
input BikeEventUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
bikeEventTypeId: ID
|
|
|
|
|
cargoBikeId: ID
|
|
|
|
@ -646,45 +656,45 @@ input BikeEventUpdateInput {
|
|
|
|
|
documents: [String]
|
|
|
|
|
remark: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type BikeEventType {
|
|
|
|
|
type BikeEventType {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
isLockedByMe: Boolean!
|
|
|
|
|
isLocked: Boolean!
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input BikeEventTypeUpdateInput {
|
|
|
|
|
input BikeEventTypeUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"(dt. Anbieter) bezieht sich auf die Beziehung einer Person oder Organisation zum Lastenrad"
|
|
|
|
|
type Provider {
|
|
|
|
|
"(dt. Anbieter) bezieht sich auf die Beziehung einer Person oder Organisation zum Lastenrad"
|
|
|
|
|
type Provider {
|
|
|
|
|
id: ID!
|
|
|
|
|
formName: String
|
|
|
|
|
privatePerson: ContactInformation
|
|
|
|
|
organisation: Organisation
|
|
|
|
|
cargoBikes: [CargoBike]
|
|
|
|
|
cargoBikes: [CargoBike!]
|
|
|
|
|
isLocked: Boolean!
|
|
|
|
|
isLockedByMe: Boolean!
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"(dt. Anbieter)"
|
|
|
|
|
input ProviderCreateInput {
|
|
|
|
|
"(dt. Anbieter)"
|
|
|
|
|
input ProviderCreateInput {
|
|
|
|
|
formName: String!
|
|
|
|
|
privatePersonId: ID
|
|
|
|
|
organisationId: ID
|
|
|
|
|
cargoBikeIds: [ID]
|
|
|
|
|
}
|
|
|
|
|
cargoBikeIds: [ID!]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input ProviderUpdateInput {
|
|
|
|
|
input ProviderUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
formName: String
|
|
|
|
|
privatePersonId: ID
|
|
|
|
@ -692,37 +702,37 @@ input ProviderUpdateInput {
|
|
|
|
|
"cargoBikes are added, you can not take existing relations away. use update cargoBike or add bike to another provider instead"
|
|
|
|
|
cargoBikeIds: [ID]
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
A Person can have several instances of contact information.
|
|
|
|
|
The reason for this is, that some people have info for interns and externals that are different.
|
|
|
|
|
"""
|
|
|
|
|
type Person {
|
|
|
|
|
"""
|
|
|
|
|
A Person can have several instances of contact information.
|
|
|
|
|
The reason for this is, that some people have info for interns and externals that are different.
|
|
|
|
|
"""
|
|
|
|
|
type Person {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
firstName: String!
|
|
|
|
|
contactInformation: [ContactInformation]
|
|
|
|
|
contactInformation: [ContactInformation!]
|
|
|
|
|
isLocked: Boolean!
|
|
|
|
|
isLockedByMe: Boolean!
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input PersonCreateInput {
|
|
|
|
|
input PersonCreateInput {
|
|
|
|
|
name: String!
|
|
|
|
|
firstName: String!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input PersonUpdateInput {
|
|
|
|
|
input PersonUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String
|
|
|
|
|
firstName: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type ContactInformation {
|
|
|
|
|
type ContactInformation {
|
|
|
|
|
id: ID!
|
|
|
|
|
person: Person!
|
|
|
|
|
phone: String
|
|
|
|
@ -735,18 +745,18 @@ type ContactInformation {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input ContactInformationCreateInput {
|
|
|
|
|
input ContactInformationCreateInput {
|
|
|
|
|
personId: ID!
|
|
|
|
|
phone: String
|
|
|
|
|
phone2: String
|
|
|
|
|
email: String
|
|
|
|
|
email2: String
|
|
|
|
|
note: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input ContactInformationUpdateInput {
|
|
|
|
|
input ContactInformationUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
personId: ID
|
|
|
|
|
phone: String
|
|
|
|
@ -755,14 +765,14 @@ input ContactInformationUpdateInput {
|
|
|
|
|
email2: String
|
|
|
|
|
note: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Organisation {
|
|
|
|
|
type Organisation {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
address: Address
|
|
|
|
|
"(dt. Ausleihstation)"
|
|
|
|
|
lendingStations: [LendingStation]
|
|
|
|
|
lendingStations: [LendingStation!]
|
|
|
|
|
"registration number of association"
|
|
|
|
|
associationNo: String
|
|
|
|
|
"If Club, at what court registered"
|
|
|
|
@ -775,9 +785,9 @@ type Organisation {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input OrganisationCreateInput {
|
|
|
|
|
input OrganisationCreateInput {
|
|
|
|
|
address: AddressCreateInput!
|
|
|
|
|
name: String!
|
|
|
|
|
"registration number of association"
|
|
|
|
@ -786,9 +796,9 @@ input OrganisationCreateInput {
|
|
|
|
|
registeredAt: String
|
|
|
|
|
contactInformationId: ID
|
|
|
|
|
otherData: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input OrganisationUpdateInput {
|
|
|
|
|
input OrganisationUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
address: AddressCreateInput
|
|
|
|
|
name: String
|
|
|
|
@ -799,18 +809,18 @@ input OrganisationUpdateInput {
|
|
|
|
|
contactInformationId: ID
|
|
|
|
|
otherData: String
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"(dt. Standort)"
|
|
|
|
|
type LendingStation {
|
|
|
|
|
"(dt. Standort)"
|
|
|
|
|
type LendingStation {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String!
|
|
|
|
|
contactInformationIntern: ContactInformation
|
|
|
|
|
contactInformationExtern: ContactInformation
|
|
|
|
|
address: Address!
|
|
|
|
|
timeFrames: [TimeFrame]!
|
|
|
|
|
timeFrames: [TimeFrame!]!
|
|
|
|
|
loanPeriod: LoanPeriod
|
|
|
|
|
cargoBikes: [CargoBike]
|
|
|
|
|
cargoBikes: [CargoBike!]
|
|
|
|
|
"Total amount of cargoBikes currently assigned to the lending station"
|
|
|
|
|
numCargoBikes: Int!
|
|
|
|
|
organisation: Organisation
|
|
|
|
@ -819,24 +829,24 @@ type LendingStation {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
If you want to create LendingStation with cargoBikes, use createTimeFrame and set to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input LendingStationCreateInput {
|
|
|
|
|
"""
|
|
|
|
|
If you want to create LendingStation with cargoBikes, use createTimeFrame and set to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input LendingStationCreateInput {
|
|
|
|
|
name: String!
|
|
|
|
|
contactInformationInternId: ID
|
|
|
|
|
contactInformationExternId: ID
|
|
|
|
|
address: AddressCreateInput!
|
|
|
|
|
loanPeriod: LoanPeriodInput
|
|
|
|
|
organisationId: ID
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
If you want to create LendingStation with cargoBikes, use createTimeFrame and set to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input LendingStationUpdateInput {
|
|
|
|
|
"""
|
|
|
|
|
If you want to create LendingStation with cargoBikes, use createTimeFrame and set to: Date = null
|
|
|
|
|
"""
|
|
|
|
|
input LendingStationUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
name: String
|
|
|
|
|
contactInformationInternId: ID
|
|
|
|
@ -845,12 +855,12 @@ input LendingStationUpdateInput {
|
|
|
|
|
loanPeriod: LoanPeriodInput
|
|
|
|
|
organisationId: ID
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
(dt. Ausleihzeiten) not implemented
|
|
|
|
|
"""
|
|
|
|
|
type LoanPeriod {
|
|
|
|
|
"""
|
|
|
|
|
(dt. Ausleihzeiten) not implemented
|
|
|
|
|
"""
|
|
|
|
|
type LoanPeriod {
|
|
|
|
|
generalRemark: String
|
|
|
|
|
"notes for each day of the week, starting on Monday"
|
|
|
|
|
notes: [String]
|
|
|
|
@ -859,24 +869,24 @@ type LoanPeriod {
|
|
|
|
|
Starting with Monday from, Monday to, Tuesday from, ..., Sunday to
|
|
|
|
|
"""
|
|
|
|
|
loanTimes: [String]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
(dt. Ausleihzeiten)
|
|
|
|
|
"""
|
|
|
|
|
input LoanPeriodInput {
|
|
|
|
|
"""
|
|
|
|
|
(dt. Ausleihzeiten)
|
|
|
|
|
"""
|
|
|
|
|
input LoanPeriodInput {
|
|
|
|
|
generalRemark: String
|
|
|
|
|
"notes for each day of the week, starting on Monday"
|
|
|
|
|
notes: [String]
|
|
|
|
|
notes: [String!]
|
|
|
|
|
"""
|
|
|
|
|
Loan times from and until for each day of the week.
|
|
|
|
|
Starting with Monday from, Monday to, Tuesday from, ..., Sunday to
|
|
|
|
|
"""
|
|
|
|
|
loanTimes: [String]
|
|
|
|
|
}
|
|
|
|
|
loanTimes: [String!]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"(dt. Zeitscheibe) When was a bike where"
|
|
|
|
|
type TimeFrame {
|
|
|
|
|
"(dt. Zeitscheibe) When was a bike where"
|
|
|
|
|
type TimeFrame {
|
|
|
|
|
id: ID!
|
|
|
|
|
"format YYYY-MM-dd"
|
|
|
|
|
from: Date!
|
|
|
|
@ -890,17 +900,17 @@ type TimeFrame {
|
|
|
|
|
"null if not locked by other user"
|
|
|
|
|
lockedBy: ID
|
|
|
|
|
lockedUntil: Date
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input TimeFrameCreateInput {
|
|
|
|
|
input TimeFrameCreateInput {
|
|
|
|
|
from: Date!
|
|
|
|
|
to: Date
|
|
|
|
|
note: String
|
|
|
|
|
lendingStationId: ID!
|
|
|
|
|
cargoBikeId: ID!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input TimeFrameUpdateInput {
|
|
|
|
|
input TimeFrameUpdateInput {
|
|
|
|
|
id: ID!
|
|
|
|
|
from: Date
|
|
|
|
|
to: Date
|
|
|
|
@ -908,27 +918,27 @@ input TimeFrameUpdateInput {
|
|
|
|
|
lendingStationId: ID
|
|
|
|
|
cargoBikeId: ID
|
|
|
|
|
keepLock: Boolean
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Address {
|
|
|
|
|
type Address {
|
|
|
|
|
street: String!
|
|
|
|
|
number: String!
|
|
|
|
|
zip: String!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input AddressCreateInput {
|
|
|
|
|
input AddressCreateInput {
|
|
|
|
|
street: String!
|
|
|
|
|
number: String!
|
|
|
|
|
zip: String!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input AddressUpdateInput {
|
|
|
|
|
input AddressUpdateInput {
|
|
|
|
|
street: String
|
|
|
|
|
number: String
|
|
|
|
|
zip: String
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type ActionLog {
|
|
|
|
|
type ActionLog {
|
|
|
|
|
id: ID!
|
|
|
|
|
userId: ID!
|
|
|
|
|
date: Date!
|
|
|
|
@ -938,56 +948,56 @@ type ActionLog {
|
|
|
|
|
entriesOld: String!
|
|
|
|
|
"in json format"
|
|
|
|
|
entriesNew: String!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Query {
|
|
|
|
|
type Query {
|
|
|
|
|
"Will (eventually) return all properties of cargo bike"
|
|
|
|
|
cargoBikeById(id:ID!): CargoBike
|
|
|
|
|
"returns cargoBikes ordered by name ascending, relations are not loaded, use cargoBikeById instead"
|
|
|
|
|
cargoBikes(offset: Int!, limit: Int!): [CargoBike]!
|
|
|
|
|
cargoBikes(offset: Int!, limit: Int!): [CargoBike!]!
|
|
|
|
|
engagementById(id: ID!): Engagement
|
|
|
|
|
engagements(offset: Int!, limit: Int!): [Engagement]!
|
|
|
|
|
engagements(offset: Int!, limit: Int!): [Engagement!]!
|
|
|
|
|
engagementTypeById(id: ID!): EngagementType
|
|
|
|
|
engagementTypes(offset: Int!, limit: Int!): [EngagementType]!
|
|
|
|
|
engagementTypes(offset: Int!, limit: Int!): [EngagementType!]!
|
|
|
|
|
"equipment by id, will return null if id not found"
|
|
|
|
|
equipmentById(id: ID!): Equipment
|
|
|
|
|
equipment(offset: Int!, limit: Int!): [Equipment]!
|
|
|
|
|
equipment(offset: Int!, limit: Int!): [Equipment!]!
|
|
|
|
|
equipmentTypeById(id: ID!): EquipmentType
|
|
|
|
|
equipmentTypes(offset: Int!, limit: Int!): [EquipmentType]!
|
|
|
|
|
equipmentTypes(offset: Int!, limit: Int!): [EquipmentType!]!
|
|
|
|
|
"return null if id not found"
|
|
|
|
|
providerById(id:ID!): Provider
|
|
|
|
|
"unique equipment with pagination, contains relation to bike (with no further joins), so if you wanna know more about the bike, use cargoBikeById"
|
|
|
|
|
providers(offset: Int!, limit: Int!): [Provider]!
|
|
|
|
|
"Returns providers with pagination"
|
|
|
|
|
providers(offset: Int!, limit: Int!): [Provider!]!
|
|
|
|
|
"participant by id"
|
|
|
|
|
participantById(id:ID!): Participant
|
|
|
|
|
participants(offset: Int!, limit: Int!): [ Participant]!
|
|
|
|
|
participants(offset: Int!, limit: Int!): [Participant!]!
|
|
|
|
|
workshopTypeById(id: ID!): WorkshopType
|
|
|
|
|
workshopTypes(offset: Int!, limit: Int!): [WorkshopType]!
|
|
|
|
|
workshopTypes(offset: Int!, limit: Int!): [WorkshopType!]!
|
|
|
|
|
workshopById(id: ID!): Workshop
|
|
|
|
|
workshops(offset: Int!, limit: Int!): [Workshop]!
|
|
|
|
|
workshops(offset: Int!, limit: Int!): [Workshop!]!
|
|
|
|
|
lendingStationById(id:ID!): LendingStation
|
|
|
|
|
lendingStations(offset: Int!, limit: Int!): [LendingStation]!
|
|
|
|
|
lendingStations(offset: Int!, limit: Int!): [LendingStation!]!
|
|
|
|
|
organisationById(id: ID!): Organisation
|
|
|
|
|
organisations(offset: Int!, limit: Int!): [Organisation]!
|
|
|
|
|
organisations(offset: Int!, limit: Int!): [Organisation!]!
|
|
|
|
|
timeFrameById(id: ID!): TimeFrame
|
|
|
|
|
timeframes(offset: Int!, limit: Int!): [TimeFrame]!
|
|
|
|
|
timeFrames(offset: Int!, limit: Int!): [TimeFrame!]!
|
|
|
|
|
contactInformationById(id: ID!): ContactInformation
|
|
|
|
|
contactInformation(offset: Int!, limit: Int!): [ContactInformation]!
|
|
|
|
|
contactInformation(offset: Int!, limit: Int!): [ContactInformation!]!
|
|
|
|
|
personById(id: ID!): Person
|
|
|
|
|
persons(offset: Int!, limit: Int!): [Person]
|
|
|
|
|
bikeEventTypes(offset: Int!, limit: Int!): [BikeEventType]
|
|
|
|
|
persons(offset: Int!, limit: Int!): [Person!]
|
|
|
|
|
bikeEventTypes(offset: Int!, limit: Int!): [BikeEventType!]
|
|
|
|
|
bikeEventTypeByd(id: ID!): BikeEventType
|
|
|
|
|
bikeEvents(offset: Int!, limit: Int!): [BikeEvent]!
|
|
|
|
|
bikeEvents(offset: Int!, limit: Int!): [BikeEvent!]!
|
|
|
|
|
bikeEventById(id:ID!): BikeEvent
|
|
|
|
|
"actionLog for current user"
|
|
|
|
|
actionLog: [ActionLog]
|
|
|
|
|
actionLog: [ActionLog!]
|
|
|
|
|
"actionLog for specific user"
|
|
|
|
|
actionLogByUser(id: ID!): [ActionLog]
|
|
|
|
|
actionLogByUser(id: ID!): [ActionLog!]
|
|
|
|
|
"actionLog form all users"
|
|
|
|
|
actionLogAll: [ActionLog]
|
|
|
|
|
}
|
|
|
|
|
actionLogAll: [ActionLog!]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Mutation {
|
|
|
|
|
type Mutation {
|
|
|
|
|
"""
|
|
|
|
|
CARGO BIKE
|
|
|
|
|
creates new cargoBike and returns cargobike with new ID
|
|
|
|
@ -1097,6 +1107,6 @@ type Mutation {
|
|
|
|
|
unlockOrganisation(id: ID!): Boolean!
|
|
|
|
|
updateOrganisation(organisation: OrganisationUpdateInput!): Organisation!
|
|
|
|
|
deleteOrganisation(id: ID!): Boolean!
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
`;
|
|
|
|
|