FINERACT-1694: Avro schemas project + code generation + some initial Avro Schemas

This commit is contained in:
Arnold Galovics
2022-08-30 14:39:12 +02:00
committed by Aleksandar Vidakovic
parent 4808bb3489
commit 264022be4d
24 changed files with 1227 additions and 3 deletions
@@ -0,0 +1,71 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "MessageV1",
"namespace": "org.apache.fineract.avro",
"type": "record",
"fields": [
{
"name": "id",
"type": "int",
"doc": "The ID of the message to be sent"
},
{
"name": "source",
"type": "string",
"doc": "A unique identifier of the source service"
},
{
"name": "type",
"type": "string",
"doc": "The type of event the payload refers to. For example LOAN_APPROVED"
},
{
"name": "version",
"type": "string",
"doc": "The version of the type of event. For example 1, 2, 3, etc"
},
{
"name": "category",
"type": "string",
"doc": "The category of event the payload refers to. For example LOAN"
},
{
"name": "createdAt",
"type": "string",
"doc": "The UTC time of when the event has been raised; in ISO_LOCAL_DATE_TIME format. For example 2011-12-03T10:15:30"
},
{
"name": "tenantId",
"type": "string",
"doc": "The tenantId that the event has been sent from. For example default"
},
{
"name": "idempotencyKey",
"type": "string",
"doc": "The idempotency key for this particular event for consumer de-duplication"
},
{
"name": "payload",
"type": "bytes",
"doc": "The payload serialized into Avro bytes"
}
]
}
@@ -0,0 +1,82 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "ClientEventV1",
"namespace": "org.apache.fineract.avro.client.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "accountNo",
"type": [
"null",
"string"
]
},
{
"name": "status",
"type": [
"null",
"org.apache.fineract.avro.client.v1.ClientEventV1Status"
]
},
{
"name": "active",
"type": [
"null",
"boolean"
]
},
{
"name": "fullName",
"type": [
"null",
"string"
]
},
{
"name": "displayName",
"type": [
"null",
"string"
]
},
{
"name": "officeId",
"type": [
"null",
"int"
]
},
{
"name": "officeName",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "ClientEventV1Status",
"namespace": "org.apache.fineract.avro.client.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,208 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "accountNo",
"type": [
"null",
"string"
]
},
{
"name": "clientId",
"type": [
"null",
"int"
]
},
{
"name": "clientName",
"type": [
"null",
"string"
]
},
{
"name": "savingsProductId",
"type": [
"null",
"int"
]
},
{
"name": "savingsProductName",
"type": [
"null",
"string"
]
},
{
"name": "fieldOfficerId",
"type": [
"null",
"int"
]
},
{
"name": "status",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1Status"
]
},
{
"name": "timeline",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1Timeline"
]
},
{
"name": "currency",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1Currency"
]
},
{
"name": "interestCompoundingPeriodType",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1InterestCompoundingPeriodType"
]
},
{
"name": "interestPostingPeriodType",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1InterestPostingPeriodType"
]
},
{
"name": "interestCalculationType",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1InterestCalculationType"
]
},
{
"name": "interestCalculationDaysInYearType",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1InterestCalculationDaysInYearType"
]
},
{
"name": "summary",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1Summary"
]
},
{
"name": "interestFreePeriodApplicable",
"type": [
"null",
"boolean"
]
},
{
"name": "preClosurePenalApplicable",
"type": [
"null",
"boolean"
]
},
{
"name": "minDepositTerm",
"type": [
"null",
"int"
]
},
{
"name": "maxDepositTerm",
"type": [
"null",
"int"
]
},
{
"name": "minDepositTermType",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1MinDepositTermType"
]
},
{
"name": "maxDepositTermType",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1MaxDepositTermType"
]
},
{
"name": "depositAmount",
"type": [
"null",
"float"
]
},
{
"name": "maturityAmount",
"type": [
"null",
"float"
]
},
{
"name": "maturityDate",
"type": [
"null",
"string"
]
},
{
"name": "depositPeriod",
"type": [
"null",
"int"
]
},
{
"name": "depositPeriodFrequency",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1DepositPeriodFrequency"
]
}
]
}
@@ -0,0 +1,75 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1Currency",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "name",
"type": [
"null",
"string"
]
},
{
"name": "decimalPlaces",
"type": [
"null",
"int"
]
},
{
"name": "inMultiplesOf",
"type": [
"null",
"int"
]
},
{
"name": "displaySymbol",
"type": [
"null",
"string"
]
},
{
"name": "nameCode",
"type": [
"null",
"string"
]
},
{
"name": "displayLabel",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1DepositPeriodFrequency",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,41 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1InterestCalculationDaysInYearType",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "accountBalance",
"type": [
"null",
"float"
]
},
{
"name": "currency",
"type": [
"null",
"org.apache.fineract.avro.fixeddeposit.v1.FixedDepositAccountEventV1Currency"
]
}
]
}
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1InterestCalculationType",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1InterestCompoundingPeriodType",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1InterestPostingPeriodType",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1MaxDepositTermType",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1MinDepositTermType",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,110 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1Status",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
},
{
"name": "submittedAndPendingApproval",
"type": [
"null",
"boolean"
]
},
{
"name": "approved",
"type": [
"null",
"boolean"
]
},
{
"name": "rejected",
"type": [
"null",
"boolean"
]
},
{
"name": "withdrawnByApplicant",
"type": [
"null",
"boolean"
]
},
{
"name": "active",
"type": [
"null",
"boolean"
]
},
{
"name": "closed",
"type": [
"null",
"boolean"
]
},
{
"name": "prematureClosed",
"type": [
"null",
"boolean"
]
},
{
"name": "transferInProgress",
"type": [
"null",
"boolean"
]
},
{
"name": "transferOnHold",
"type": [
"null",
"boolean"
]
}
]
}
@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1Summary",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "id",
"type": [
"null",
"int"
]
},
{
"name": "code",
"type": [
"null",
"string"
]
},
{
"name": "description",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,54 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "FixedDepositAccountEventV1Timeline",
"namespace": "org.apache.fineract.avro.fixeddeposit.v1",
"type": "record",
"fields": [
{
"name": "submittedOnDate",
"type": [
"null",
"string"
]
},
{
"name": "submittedByUsername",
"type": [
"null",
"string"
]
},
{
"name": "submittedByFirstname",
"type": [
"null",
"string"
]
},
{
"name": "submittedByLastname",
"type": [
"null",
"string"
]
}
]
}
@@ -0,0 +1,117 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
{
"name": "CommandProcessingResultEventV1",
"namespace": "org.apache.fineract.avro.generic.v1",
"type": "record",
"fields": [
{
"name": "commandId",
"type": [
"null",
"long"
]
},
{
"name": "officeId",
"type": [
"null",
"long"
]
},
{
"name": "groupId",
"type": [
"null",
"long"
]
},
{
"name": "clientId",
"type": [
"null",
"long"
]
},
{
"name": "loanId",
"type": [
"null",
"long"
]
},
{
"name": "savingsId",
"type": [
"null",
"long"
]
},
{
"name": "resourceId",
"type": [
"null",
"long"
]
},
{
"name": "subResourceId",
"type": [
"null",
"long"
]
},
{
"name": "transactionId",
"type": [
"null",
"long"
]
},
{
"name": "resourceIdentifier",
"type": [
"null",
"string"
]
},
{
"name": "productId",
"type": [
"null",
"long"
]
},
{
"name": "gsimId",
"type": [
"null",
"long"
]
},
{
"name": "glimId",
"type": [
"null",
"long"
]
}
]
}