Last active
August 23, 2022 14:49
-
-
Save Oluwasetemi/dfe7c6ecf797f5f8fff66576592fa832 to your computer and use it in GitHub Desktop.
current and updated schema for fluna-web-app
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This "input" configures a global authorization rule to enable public access to | |
| # all models in this schema. Learn more about authorization rules here: https://docs.amplify.aws/cli/graphql/authorization-rules | |
| input AMPLIFY { | |
| globalAuthRule: AuthRule = { allow: public } | |
| } # FOR TESTING ONLY! | |
| type User | |
| @model | |
| @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private, operations: [read] } | |
| ] | |
| ) { | |
| id: ID! | |
| owner: String | |
| @index(name: "byUser", queryField: "userByOwner", sortKeyFields: ["id"]) | |
| firstName: String | |
| lastName: String | |
| email: String | |
| role: String | |
| phone: String | |
| signUpLocation: String | |
| signUpTimezone: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| company: Company @belongsTo | |
| payments: [Payments] @hasMany | |
| } | |
| type Company | |
| @model | |
| @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private, operations: [read] } | |
| { allow: public, operations: [read] } | |
| ] | |
| ) { | |
| id: ID! | |
| name: String | |
| legalName: String | |
| industryType: String | |
| country: String | |
| city: String | |
| website: String | |
| incorporationYear: String | |
| businessDescription: String | |
| numberOfFullTimeEmployees: Int | |
| numberOfPartTimeEmployees: Int | |
| typesOfCustomers: TypeOfCustomer | |
| signUpAverageMonthlyRevenue: Int | |
| signUpCreditCurrency: String | |
| signUpCreditAmount: Int | |
| treasuryNeeds: [TreasuryNeeds] | |
| proofOfAddressType: String | |
| stage: CompanyStage | |
| proofOfAddress: String | |
| countriesWhereCompanyHaveAccount: [String] | |
| currencyOverride: AWSJSON | |
| baseCurrency: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| owner: String | |
| @index(name: "byOwner", queryField: "companyByOwner", sortKeyFields: ["id"]) | |
| user: [User] @hasMany | |
| account: [Account] @hasMany | |
| wallet: [Wallet] @hasMany | |
| payments: [Payments] @hasMany | |
| transaction: [Transaction] @hasMany | |
| category: [Category] @hasMany | |
| companyKYCStatus: CompanyKYCStatus | |
| companyDocuments: [CompanyDocuments] | |
| @hasMany(indexName: "byCompanyDocuments", fields: ["id"]) | |
| ownershipDetails: [OwnershipDetails] | |
| @hasMany(indexName: "byOwnershipDetails", fields: ["id"]) | |
| rules: [RulesInfo] | |
| } | |
| type Account | |
| @model | |
| @searchable | |
| @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private, operations: [create, read, update] } | |
| { allow: public, operations: [read] } | |
| ] | |
| ) { | |
| id: ID! | |
| accountId: ID | |
| @index( | |
| name: "byAccountId" | |
| queryField: "accountByAccountId" | |
| sortKeyFields: ["id"] | |
| ) | |
| accountNickname: String | |
| accountName: String | |
| lastUpdatedDate: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| currency: String | |
| accountType: String | |
| accountNumber: String | |
| accountToken: String | |
| reAuthorize: Boolean | |
| owner: String | |
| @index(name: "byOwner", queryField: "accountByOwner", sortKeyFields: ["id"]) | |
| vendor: Vendor @belongsTo | |
| bank: Bank @belongsTo | |
| company: Company @belongsTo | |
| recipient: Recipients @belongsTo | |
| transaction: [Transaction] @hasMany | |
| bankAccountNumber: String | |
| routing: String | |
| wireRouting: String | |
| eftAccountNumber: String | |
| eftInstitution: String | |
| eftBranch: String | |
| ibanAccountNumber: String | |
| bicNumber: String | |
| bacsAccountNumber: String | |
| bacsSortCode: String | |
| lastTransactionDate: String | |
| wallet: Wallet @hasOne | |
| balance: Float | |
| accountCreationType: AccountCreationTypes | |
| accountTransferType:AccountTransferTypes | |
| } | |
| enum AccountTransferTypes { | |
| Local | |
| International | |
| } | |
| enum AccountCreationTypes { | |
| Mono | |
| Plaid | |
| Recipient | |
| Wallet | |
| } | |
| type Vendor @model { | |
| id: ID! | |
| vendorName: String! | |
| @index( | |
| name: "byVendorName" | |
| queryField: "vendorByVendorName" | |
| sortKeyFields: ["id"] | |
| ) | |
| vendorLogo: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| account: [Account] @hasMany | |
| } | |
| type Bank @model { | |
| id: ID! | |
| bankName: String | |
| @index( | |
| name: "byBankName" | |
| queryField: "bankByBankName" | |
| sortKeyFields: ["id"] | |
| ) | |
| bankLogo: String | |
| createdAt: AWSDateTime! | |
| bankCode: String | |
| @index( | |
| name: "byBankCode" | |
| queryField: "bankByCode" | |
| sortKeyFields: ["id"] | |
| ) | |
| updatedAt: AWSDateTime! | |
| account: [Account] @hasMany | |
| wallet: [Wallet] @hasMany | |
| country: Country @belongsTo | |
| } | |
| type Transaction @model @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private, operations: [read, update] } | |
| { allow: public, operations: [read, update] } | |
| ] | |
| ) { | |
| id: ID! | |
| description: String | |
| entity: String | |
| categoryVendor: String | |
| categoryStandardized: String | |
| categoryUser: String | |
| amount: Int | |
| currency: String | |
| channel: String | |
| type: String | |
| date: String | |
| time: String | |
| dateCreated: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| account: Account @belongsTo | |
| company: Company @belongsTo | |
| } | |
| type Country @model { | |
| id: ID! | |
| countryName: String | |
| @index( | |
| name: "byCountryName" | |
| queryField: "countryByCountryName" | |
| sortKeyFields: ["id"] | |
| ) | |
| countryFlag: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| vendorId: ID | |
| region: String | |
| @index( | |
| name: "byRegion" | |
| queryField: "countryByRegion" | |
| sortKeyFields: ["id"] | |
| ) | |
| currency: String | |
| vendorSupported: Vendor @hasOne(fields: ["vendorId"]) | |
| bank: [Bank] @hasMany | |
| } | |
| type Currency @model { | |
| id: ID! | |
| base: String | |
| rates: AWSJSON | |
| dataCreated: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| } | |
| type ExchangeRates @model { | |
| id: ID! | |
| currencyPair: String | |
| buyPrice: Float | |
| sellPrice: Float | |
| baseCurrency: String | |
| converteredCurrency: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| } | |
| type TransactionActivities { | |
| transactionid: String | |
| accountid: String | |
| companyid: String | |
| description: String | |
| entity: String | |
| categoryvendor: String | |
| categorystandardized: String | |
| categoryuserrule: String | |
| categoryuser: String | |
| amount: Float | |
| currency: String | |
| channel: String | |
| type: String | |
| date: String | |
| time: String | |
| datecreated: String | |
| iscash: Boolean | |
| } | |
| type TransactionActivitiesRecord { | |
| transactionid: String | |
| accountid: String | |
| companyid: String | |
| description: String | |
| entity: String | |
| categoryvendor: String | |
| categorystandardized: String | |
| categoryuser: String | |
| amount: Float | |
| currency: String | |
| channel: String | |
| type: String | |
| date: String | |
| datecreated: String | |
| iscash: Boolean | |
| } | |
| input ModelTransactionActivitiesRecordFilterInput { | |
| transactionid: ModelStringInput | |
| accountid: ModelStringInput | |
| companyid: ModelStringInput | |
| description: ModelStringInput | |
| entity: ModelStringInput | |
| categoryVendor: ModelStringInput | |
| categoryStandardized: ModelStringInput | |
| categoryUser: ModelStringInput | |
| amount: ModelFloatInput | |
| currency: ModelStringInput | |
| channel: ModelStringInput | |
| type: ModelStringInput | |
| date: ModelStringInput | |
| datecreated: ModelStringInput | |
| iscash: ModelBooleanInput | |
| and: [ModelTransactionActivitiesRecordFilterInput] | |
| or: [ModelTransactionActivitiesRecordFilterInput] | |
| not: ModelTransactionActivitiesRecordFilterInput | |
| } | |
| enum ModelAttributeTypes { | |
| binary | |
| binarySet | |
| bool | |
| list | |
| map | |
| number | |
| numberSet | |
| string | |
| stringSet | |
| _null | |
| } | |
| input ModelIDInput { | |
| ne: ID | |
| eq: ID | |
| le: ID | |
| lt: ID | |
| ge: ID | |
| gt: ID | |
| contains: ID | |
| notContains: ID | |
| between: [ID] | |
| beginsWith: ID | |
| attributeExists: Boolean | |
| attributeType: ModelAttributeTypes | |
| size: ModelSizeInput | |
| } | |
| input ModelStringInput { | |
| ne: String | |
| eq: String | |
| le: String | |
| lt: String | |
| ge: String | |
| gt: String | |
| contains: String | |
| notContains: String | |
| between: [String] | |
| beginsWith: String | |
| attributeExists: Boolean | |
| attributeType: ModelAttributeTypes | |
| size: ModelSizeInput | |
| } | |
| input ModelSizeInput { | |
| ne: Int | |
| eq: Int | |
| le: Int | |
| lt: Int | |
| ge: Int | |
| gt: Int | |
| between: [Int] | |
| } | |
| input ModelBooleanInput { | |
| ne: Boolean | |
| eq: Boolean | |
| attributeExists: Boolean | |
| attributeType: ModelAttributeTypes | |
| } | |
| input ModelFloatInput { | |
| ne: Float | |
| eq: Float | |
| le: Float | |
| lt: Float | |
| ge: Float | |
| gt: Float | |
| between: [Float] | |
| attributeExists: Boolean | |
| attributeType: ModelAttributeTypes | |
| } | |
| type CompanyCurrency { | |
| currency: String | |
| rate: Float | |
| status: String | |
| } | |
| type CompanyDetails { | |
| companyName: String | |
| companyRegistrationId: String | |
| proofOfCompanyRegistration: String | |
| proofOfCompanyRegistrationFileName: String | |
| } | |
| type CompanyAddress { | |
| country: String | |
| city: String | |
| streetName: String | |
| postCode: String | |
| } | |
| type KeyCompanyDirector { | |
| firstName: String | |
| lastName: String | |
| emailAddress: String | |
| } | |
| type PersonalInfo { | |
| firstName: String | |
| lastName: String | |
| emailAddress: String | |
| } | |
| type PersonalDetails { | |
| dateOfBirth: String | |
| position: String | |
| phoneNumber: String | |
| nationality: String | |
| gender: String | |
| bvn: String | |
| } | |
| type IdentificationDetails { | |
| idType: String | |
| idNumber: String | |
| idUpload: String | |
| idUploadFileName: String | |
| hasHeldOffice: String | |
| additionalDetails: String | |
| } | |
| type CompanyDocuments @model @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private } | |
| { allow: public } | |
| ] | |
| ){ | |
| id: ID! | |
| key: String | |
| bucketName: String | |
| fileName: String | |
| name: String | |
| category: DocumentCategory | |
| entityType: EntityTypes | |
| entityId: ID! | |
| @index( | |
| name: "byCompanyDocuments" | |
| queryField: "companyDocumentsByCompany" | |
| sortKeyFields: ["id"] | |
| ) | |
| company: Company @belongsTo(fields: ["entityId"]) | |
| ownershipDetail: OwnershipDetails @belongsTo(fields: ["entityId"]) | |
| loan: CompanyLoans @belongsTo(fields: ["entityId"]) | |
| } | |
| enum DocumentCategory { | |
| CompanyKyc | |
| LoanOnLendingFacility | |
| LoanOperationsFinancing | |
| LoanPurchaseOrderFinancing | |
| IdentificationDetails | |
| CompanyDetails | |
| } | |
| enum EntityTypes { | |
| Company | |
| CompanyLoans | |
| OwnershipDetails | |
| } | |
| type OwnershipDetails @model @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private } | |
| { allow: public } | |
| ] | |
| ) { | |
| id: ID! | |
| ownerType: OwnerType! | |
| ownerPercentage: Int | |
| fillOwnershipStatus: FillOwnershipStatus | |
| companyDetails: CompanyDetails | |
| companyAddress: CompanyAddress | |
| keyCompanyDirector: KeyCompanyDirector | |
| personalInfo: PersonalInfo | |
| personalDetails: PersonalDetails | |
| identificationDetails: IdentificationDetails | |
| status: OwnershipDetailsStatus | |
| companyID: ID! @index(name: "byOwnershipDetails", queryField: "getOwnershipDetailsByCompany", sortKeyFields: ["id"]) | |
| company: Company @belongsTo(fields: ["companyID"]) | |
| companyDocuments: [CompanyDocuments] @hasMany(indexName: "byCompanyDocuments", fields: ["id"]) | |
| } | |
| enum TransferType { | |
| Credit | |
| Debit | |
| } | |
| type RulesInfo { | |
| key: Int | |
| index: Int | |
| userID: ID! | |
| name: String | |
| priority: Int | |
| accounts: String | |
| category: String | |
| description: String | |
| subCategory: String | |
| modifiedDate: String | |
| transferType: TransferType | |
| isFetchHistoricals: Boolean | |
| } | |
| type Category @model @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private } | |
| { allow: public, operations: [read, update] } | |
| ] | |
| ) { | |
| id: ID! | |
| name: String @index(name: "byCategoryName", queryField: "getByCategoryName", sortKeyFields: ["id"]) | |
| status: CategoryStatus | |
| type: CategoryTypeTwo | |
| companyID: ID! @index(name: "byCompanyCategoryId", queryField: "getCompanyCategoryId", sortKeyFields: ["id"]) | |
| company: Company @belongsTo(fields: ["companyID"]) | |
| subCategory: [SubCategory] @hasMany(indexName: "byCategory", fields: ["id"]) | |
| } | |
| type SubCategory @model @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private } | |
| { allow: public, operations: [read, update] } | |
| ] | |
| ) { | |
| id: ID! | |
| name: String @index(name: "bySubCategoryName", queryField: "getBySubCategoryName", sortKeyFields: ["id"]) | |
| categoryID: ID! @index(name: "byCategory", sortKeyFields: ["name"]) | |
| category: Category @belongsTo(fields: ["categoryID"]) | |
| } | |
| input CreateTransactionActivitiesInput { | |
| isCash: Boolean | |
| description: String | |
| entity: String | |
| categoryVendor: String | |
| categoryStandardized: String | |
| categoryUser: String | |
| amount: Float | |
| companyId: String | |
| currency: String | |
| channel: String | |
| type: String | |
| date: String | |
| time: String | |
| dateCreated: String | |
| createdAt: AWSDateTime | |
| updatedAt: AWSDateTime | |
| } | |
| input DeleteMultipleTransactionActivitiesInput { | |
| transactionIds: [String]! | |
| } | |
| input DeleteTransactionActivitiesInput { | |
| transactionId: String! | |
| } | |
| input UpdateTransactionActivitiesInput { | |
| transactionId: String! | |
| description: String | |
| entity: String | |
| categoryVendor: String | |
| categoryStandardized: String | |
| categoryUser: String | |
| amount: Int | |
| companyId: String | |
| currency: String | |
| channel: String | |
| type: String | |
| date: String | |
| time: String | |
| } | |
| enum CompanyStage { | |
| currentlyOnboarding | |
| completedOnboarding | |
| } | |
| enum OwnerType { | |
| entity | |
| individual | |
| } | |
| enum FillOwnershipStatus { | |
| manual | |
| request | |
| } | |
| enum CompanyKYCStatus { | |
| inprogress | |
| pending | |
| denied | |
| approved | |
| } | |
| enum OwnershipDetailsStatus { | |
| requested | |
| submitted | |
| } | |
| enum TypeOfCustomer { | |
| largeCompanies | |
| smallBusinesses | |
| publicSectorOrGovernment | |
| consumersPrivateIndividuals | |
| } | |
| enum TreasuryNeeds { | |
| workingCapitalLoans | |
| invoiceFactoring | |
| cashflowForecasting | |
| fxRiskMitigation | |
| paymentRiskAnalytics | |
| } | |
| type DailyBalances { | |
| id: String | |
| companyid: String | |
| accountid: String | |
| endofdaybalance: Float | |
| currency: String | |
| date: String | |
| } | |
| type CategoryType { | |
| categorystandardized: String | |
| type: String | |
| } | |
| input transactionFilterInput { | |
| type: [String] | |
| currency: [String] | |
| categories: [String] | |
| accountid: [String] | |
| } | |
| input dailyBalancesFilterInput { | |
| accountid: [String] | |
| currency: [String] | |
| } | |
| type Mutation { | |
| createTransactionActivities( | |
| input: CreateTransactionActivitiesInput! | |
| ): TransactionActivities | |
| updateTransactionActivities( | |
| input: UpdateTransactionActivitiesInput! | |
| ): TransactionActivities | |
| deleteTransactionActivities( | |
| input: DeleteTransactionActivitiesInput! | |
| ): TransactionActivities | |
| deleteMultipleTransactionActivities( | |
| input: DeleteMultipleTransactionActivitiesInput! | |
| ): TransactionActivities | |
| } | |
| input InputFilter { | |
| type: [String] | |
| currency: [String] | |
| categories: [String] | |
| accounts: [String] | |
| } | |
| type Query { | |
| listTransactionActivities( | |
| limit: Int | |
| offset: Int | |
| search: String | |
| startDate: String | |
| endDate: String | |
| companyId: String | |
| filter: InputFilter | |
| ): [TransactionActivities] | |
| getTotal( | |
| search: String | |
| type: String | |
| startDate: String | |
| endDate: String | |
| currency: String | |
| companyId: String | |
| filter: InputFilter | |
| ): String | |
| TransactionActivitiesWithCount( | |
| search: String | |
| startDate: String | |
| endDate: String | |
| companyId: String | |
| filter: InputFilter | |
| ): String | |
| migrateUsersTransactions( | |
| TransactionType: String | |
| userId: String | |
| companyId: String | |
| ): String | |
| @function(name: "standardizedTransactionStateMachine-${env}") | |
| checkUsersRules(companyID: String): String | |
| @function(name: "checkUsersRules-${env}") | |
| customGenericMailSender(recipientMails: [String], mailSubject: String, mailBody: String, ccMails: [String], bccMails: [String], replyAddresses: [String]): AWSJSON | |
| @function(name: "customMailSender-${env}") | |
| getCompanyCurrency(id: ID!): [CompanyCurrency] | |
| @function(name: "GetCompanyCurrency-${env}") | |
| getCompanyCategories(companyId: ID!): [Category] | |
| @function(name: "getCompanyCategories-${env}") | |
| sendKycInvite(email: String!, companyKYCID: String! inviterId: String!, ownerId: String!, requesterName: String!, recieverName: String!): AWSJSON | |
| @function(name: "companyKycInvite-${env}") | |
| fetchMonoTransactions(userID: String!, companyID: String!):AWSJSON @function(name: "monoTransactionMigration-${env}") | |
| decodeToken(token: String!): AWSJSON @function(name: "decodeToken-${env}") | |
| createDefaultUserCategories(id: ID!): String @function(name: "createDefaultUserCategories-${env}") | |
| getRevenueAndSpendingActivities( | |
| companyId: String | |
| startDate: String | |
| endDate: String | |
| filter: transactionFilterInput | |
| ): [TransactionActivitiesRecord] | |
| getSpendingBreakdownActivities( | |
| companyId: String | |
| startDate: String | |
| endDate: String | |
| filter: transactionFilterInput | |
| ): [TransactionActivitiesRecord] | |
| getBalanceOverTime( | |
| companyId: String | |
| startDate: String | |
| endDate: String | |
| filter: dailyBalancesFilterInput | |
| ): [DailyBalances] | |
| getTransactionActivities( | |
| companyId: String | |
| startDate: String | |
| endDate: String | |
| filter: transactionFilterInput | |
| ): [TransactionActivitiesRecord] | |
| getLastestBalance(companyId: String): [DailyBalances] | |
| getAccountEarningDetails( | |
| companyId: String | |
| limit: Int | |
| filter: dailyBalancesFilterInput | |
| ): [DailyBalances] | |
| getCategories(companyId: String): [CategoryType] | |
| getUniqueCategories(companyId: String): [String] | |
| } | |
| enum LoanStatuses { | |
| creditStructureCompleted | |
| transactionDetailsCompleted | |
| Review | |
| Active | |
| Completed | |
| Rejected | |
| } | |
| enum LoanTypes { | |
| purchaseOrderFinancing | |
| operationsFinancing | |
| onLendingFacility | |
| } | |
| enum CategoryStatus { | |
| custom | |
| default | |
| } | |
| enum CategoryTypeTwo { | |
| debit | |
| credit | |
| } | |
| enum loanPaymentStatus{ | |
| Unpaid | |
| Paid | |
| } | |
| enum paymentType { | |
| Interest | |
| Principal | |
| } | |
| enum PaymentMode { | |
| Full | |
| Part | |
| } | |
| type CreditStructure { | |
| loanName: String | |
| currency: String | |
| creditAmount: String | |
| duration: String | |
| targetDisbursementDate: String | |
| desiredRampUp: String | |
| } | |
| type TransactionDetails { | |
| relevantExperiences: String | |
| macroEconomicImpact: String | |
| unitEconomics: String | |
| transactionShare: Int | |
| confirmedBuyer: String | |
| workedWithBuyer: String | |
| priorTransactionBuyer: String | |
| signedOffContractWithBuyer: String | |
| attachSignedOffContractWithBuyer: String | |
| expectToReceiveSignedOffContractBuyer: String | |
| attachSignedOffContractWithLogisticProvider: String | |
| logisticsShippingBuyer: String | |
| signedOffProcessWithLogisticsProvider: String | |
| expectToReceiveSignedOffContractLogistics: String | |
| workedWithSupplier: String | |
| priorTransactionsSupplier: String | |
| relevantLicenses: String | |
| keyRisks: String | |
| qualityAssurances: String | |
| cashFlowCycles: String | |
| creditProgram: String | |
| criteriaQualification: String | |
| disbursementMechanism: String | |
| logisticsShippingProcess: String | |
| } | |
| type LoanRecipientDetails { | |
| bankName: String | |
| accountName: String | |
| accountNumber: String | |
| } | |
| type CompanyLoans | |
| @model { | |
| id: ID! | |
| companyID: ID | |
| applicationId: String | |
| status: LoanStatuses | |
| loanType: LoanTypes | |
| creditStructure: CreditStructure | |
| creditStructureApproved: CreditStructure | |
| transactionDetails: TransactionDetails | |
| recipient: LoanRecipientDetails | |
| interest: Float | |
| paymentMode: PaymentMode | |
| rejectionReasons: String | |
| companyDocuments: [CompanyDocuments] | |
| @hasMany(indexName: "byCompanyDocuments", fields: ["id"]) | |
| loanPayments: [LoanPayments] | |
| @hasMany(indexName: "byLoanPayments", fields: ["id"]) | |
| createdAt: AWSDateTime | |
| updatedAt: AWSDateTime | |
| } | |
| type LoanPayments @model{ | |
| id: ID! | |
| loanId: ID! | |
| @index( | |
| name: "byLoanPayments" | |
| queryField: "loanByLoanPayments" | |
| sortKeyFields: ["id"] | |
| ) | |
| companyLoans: CompanyLoans @belongsTo(fields: ["loanId"]) | |
| companyId: ID | |
| @index( | |
| name: "byCompanyId" | |
| queryField: "loanPaymentsByCompanyId" | |
| sortKeyFields: ["id"] | |
| ) | |
| paymentReference: String | |
| dueDate: String | |
| amount: Float | |
| currency: String | |
| paymentType: paymentType | |
| status: loanPaymentStatus | |
| notes: String | |
| channel: String | |
| repaymentStatus: String | |
| amountRecieved: Float | |
| paymentDate: String | |
| payerName: String | |
| payerAccountNumber: String | |
| createdAt: AWSDateTime | |
| updatedAt: AWSDateTime | |
| } | |
| type CompanyLoansDocuments @model { | |
| id: ID! | |
| loanID: ID! | |
| name: String | |
| companyID: ID | |
| fileName: String | |
| fileUrl: String | |
| documentType: String | |
| } | |
| type Recipients @model{ | |
| id: ID! | |
| name: String | |
| email: String | |
| accountName: String | |
| accounts: [Account] @hasMany | |
| owner: String | |
| @index(name: "byOwner", queryField: "recipientsByOwner", sortKeyFields: ["updatedAt"]) | |
| lastUpdatedDate: String | |
| createdAt: AWSDateTime! | |
| autoCreated: Boolean | |
| updatedAt: AWSDateTime! | |
| payments: [Payments] @hasMany | |
| } | |
| type Payments @model @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private } | |
| ] | |
| ) { | |
| id: ID! | |
| transactionType: String | |
| transactionAmount: Float | |
| settledAmount: Float | |
| currency: String | |
| ownerId: ID | |
| @index( | |
| name: "byOwner" | |
| queryField: "PaymentsByOwner" | |
| sortKeyFields: ["updatedAt"] | |
| ) | |
| owner: User @belongsTo(fields: ["ownerId"]) | |
| narration: String | |
| category: String | |
| company: Company @belongsTo | |
| wallet: Wallet @belongsTo | |
| recipientBankCode: String | |
| recipientAccountNumber: String | |
| recipientAccountName: String | |
| transactionReference: String | |
| responseMessage: String | |
| responseCode: String | |
| responseStatus: String | |
| requeryStatus: Boolean | |
| settlementDateTime: AWSDateTime | |
| sessionId: String | |
| settlementId: String | |
| latestBalance: Float | |
| provider: String | |
| recipient: Recipients @belongsTo | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| } | |
| type Wallet @model | |
| @searchable | |
| @auth( | |
| rules: [ | |
| { allow: groups, groups: ["Admin"] } | |
| { allow: owner } | |
| { allow: private, operations: [create, read, update] } | |
| { allow: public, operations: [read] } | |
| ] | |
| ) { | |
| id: ID! | |
| accountNumber: String | |
| balance: Float! | |
| accountName: String | |
| owner: String | |
| @index(name: "byOwner", queryField: "walletByOwner", sortKeyFields: ["id"]) | |
| currency: String | |
| company: Company @belongsTo | |
| bank: Bank @belongsTo | |
| lastUpdatedDate: String | |
| createdAt: AWSDateTime! | |
| updatedAt: AWSDateTime! | |
| provider: String | |
| accountId: ID | |
| account: Account @hasOne(fields: ["accountId"]) | |
| payments: [Payments] @hasMany | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment