Я использую GraphQL в веб-сервисе на Spring Boot и мне надо написать мутацию для обновления объектов Invoice. В схеме эти типы определены следующим образом:
invoice.graphqls:
type Invoice {
uid: UUID
number: String
date: LocalDate
arrivalDate: LocalDate
senderDigest: String
receiverDigest: String
payerDigest: String
departureKLADR: String
arrivalKLADR: String
departureCityUID: UUID
arrivalCityUID: UUID
departureCityName: String
arrivalCityName: String
freightInKops: Long
serviceKind: String
cargoKind: String
amount: Int
netVolume: Float
netWeight: Float
declaredValueInKops: Long
createdDateTime: LocalDateTime
updatedDateTime: LocalDateTime
transportCompanyMSP: String
transportCompanyName: String
insuranceCompanyName: String
senderItn: String
receiverItn: String
payerItn: String
distinctInsurancePolicy: Boolean
insurancePolicyRow: [InsurancePolicyRow]
}
input InvoiceInput {
uid: UUID
number: String
date: LocalDate
arrivalDate: LocalDate
senderDigest: String
receiverDigest: String
payerDigest: String
departureKLADR: String
arrivalKLADR: String
departureCityUID: UUID
arrivalCityUID: UUID
departureCityName: String
arrivalCityName: String
freightInKops: Long
serviceKind: String
cargoKind: String
amount: Int
netVolume: Float
netWeight: Float
declaredValueInKops: Long
createdDateTime: LocalDateTime
updatedDateTime: LocalDateTime
transportCompanyMSP: String
transportCompanyName: String
insuranceCompanyName: String
senderItn: String
receiverItn: String
payerItn: String
distinctInsurancePolicy: Boolean
insurancePolicyRow: [InsurancePolicyRowInput]
}
Здесь определены типы Invoice, которые могут ссылаться на объекты типаInsurancePolicyRow. Типы InsurancePolicyRow определены так:
insurance-policy-row.graphqls:
type InsurancePolicyRow {
invoiceUID: UUID
insuranceType: String
insurancePolicyNumber: String
insurancePolicyUID: UUID
cargoKind: String
invoiceDate: LocalDate
arrivalPlannedDate: LocalDate
departureKLADR: String
departureCityName: String
arrivalKLADR: String
arrivalCityName: String
totalSumInKops: Long
declaredValueInKops: Long
insuranceSum: Long
freight: Long
invoiceNumber: String
extraVehicle: String
forwardingAgent: String
driver: String
vehicleInfo: String
insuranceSection: Int
}
input InsurancePolicyRowInput {
invoiceUID: UUID
insuranceType: String
insurancePolicyNumber: String
insurancePolicyUID: UUID
cargoKind: String
#invoiceDate: LocalDate
#arrivalPlannedDate: LocalDate
departureKLADR: String
departureCityName: String
arrivalKLADR: String
arrivalCityName: String
totalSumInKops: Long
declaredValueInKops: Long
insuranceSum: Long
freight: Long
invoiceNumber: String
extraVehicle: String
forwardingAgent: String
driver: String
vehicleInfo: String
insuranceSection: Int
}
При выполнении мутаций из-за поля insurancePolicyRow: [InsurancePolicyRow] возникает исключение:
Caused by: com.coxautodev.graphql.tools.SchemaError: Expected type 'InsurancePolicyRowInput' to be a GraphQLInputType, but it wasn't!
Мутация описана так:
updateInvoice(invoice: InvoiceInput!): String
То есть для изменения данных используется мутация, принмающая input-тип InvoiceInput, в котором содержится ссылка на input-тип InsurancePloicyRowInput, но при этом парсер схемы почему-то считает, что поле insurancePolicyRow не имеет input-тип. Как исправить эту проблему?
Если убрать все поля из типа InsurancePolicyRowInput, ошибка все равно сохраняется.
Продвижение своими сайтами как стратегия роста и независимости