From 4ab4783f762aad9ec966eabb3b7fb989842d3b61 Mon Sep 17 00:00:00 2001 From: golobitch Date: Mon, 10 Feb 2025 22:26:47 +0100 Subject: [PATCH] feat(graphql): tenant settings --- .../generated/graphql.ts | 65 ++++- .../src/graphql/generated/graphql.schema.json | 230 +++++++++++++++--- .../backend/src/graphql/generated/graphql.ts | 65 ++++- .../backend/src/graphql/resolvers/index.ts | 3 +- .../graphql/resolvers/tenant_settings.test.ts | 104 +++++++- .../src/graphql/resolvers/tenant_settings.ts | 51 +++- packages/backend/src/graphql/schema.graphql | 31 ++- .../backend/src/tenants/settings/service.ts | 14 +- packages/frontend/app/generated/graphql.ts | 65 ++++- .../src/generated/graphql.ts | 65 ++++- test/integration/lib/generated/graphql.ts | 65 ++++- 11 files changed, 683 insertions(+), 75 deletions(-) diff --git a/localenv/mock-account-servicing-entity/generated/graphql.ts b/localenv/mock-account-servicing-entity/generated/graphql.ts index 53378fb72e..cb60ed8667 100644 --- a/localenv/mock-account-servicing-entity/generated/graphql.ts +++ b/localenv/mock-account-servicing-entity/generated/graphql.ts @@ -378,10 +378,8 @@ export type CreateTenantInput = { }; export type CreateTenantSettingsInput = { - /** Key of a new setting. */ - key: Scalars['String']['input']; - /** Value of a new setting. */ - value: Scalars['String']['input']; + /** List of a settings for a tenant. */ + settings: Array; }; export type CreateTenantSettingsMutationResponse = { @@ -473,6 +471,16 @@ export type DeleteTenantMutationResponse = { success: Scalars['Boolean']['output']; }; +export type DeleteTenantSettingsInput = { + /** Key to delete from tenant settings. */ + key?: InputMaybe; +}; + +export type DeleteTenantSettingsMutationResponse = { + __typename?: 'DeleteTenantSettingsMutationResponse'; + success: Scalars['Boolean']['output']; +}; + export type DepositAssetLiquidityInput = { /** Amount of liquidity to deposit. */ amount: Scalars['UInt64']['input']; @@ -769,6 +777,7 @@ export type Mutation = { deletePeer: DeletePeerMutationResponse; /** Delete a tenant. */ deleteTenant: DeleteTenantMutationResponse; + deleteTenantSettings?: Maybe; /** Deposit asset liquidity. */ depositAssetLiquidity?: Maybe; /** @@ -796,6 +805,8 @@ export type Mutation = { updatePeer: UpdatePeerMutationResponse; /** Update a tenant. */ updateTenant: TenantMutationResponse; + /** Update tenant setting. */ + updateTenantSetting: UpdateTenantSettingMutationResponse; /** Update an existing wallet address. */ updateWalletAddress: UpdateWalletAddressMutationResponse; /** Void liquidity withdrawal. Withdrawals are two-phase commits and are rolled back via this mutation. */ @@ -889,7 +900,7 @@ export type MutationCreateTenantArgs = { export type MutationCreateTenantSettingsArgs = { - input: Array; + input: CreateTenantSettingsInput; }; @@ -923,6 +934,11 @@ export type MutationDeleteTenantArgs = { }; +export type MutationDeleteTenantSettingsArgs = { + input: DeleteTenantSettingsInput; +}; + + export type MutationDepositAssetLiquidityArgs = { input: DepositAssetLiquidityInput; }; @@ -983,6 +999,11 @@ export type MutationUpdateTenantArgs = { }; +export type MutationUpdateTenantSettingArgs = { + input: TenantSettingInput; +}; + + export type MutationUpdateWalletAddressArgs = { input: UpdateWalletAddressInput; }; @@ -1517,6 +1538,13 @@ export type TenantSettingEdge = { node: TenantSetting; }; +export type TenantSettingInput = { + /** Key for this setting. */ + key: Scalars['String']['input']; + /** Value of a setting for this key. */ + value: Scalars['String']['input']; +}; + export type TenantSettingsConnection = { __typename?: 'TenantSettingsConnection'; /** A list of edges representing tenant settings and cursors for pagination. */ @@ -1620,6 +1648,11 @@ export type UpdateTenantInput = { publicName?: InputMaybe; }; +export type UpdateTenantSettingMutationResponse = { + __typename?: 'UpdateTenantSettingMutationResponse'; + setting: TenantSetting; +}; + export type UpdateWalletAddressInput = { /** Additional properties associated with this wallet address. */ additionalProperties?: InputMaybe>; @@ -1950,6 +1983,8 @@ export type ResolversTypes = { DeletePeerInput: ResolverTypeWrapper>; DeletePeerMutationResponse: ResolverTypeWrapper>; DeleteTenantMutationResponse: ResolverTypeWrapper>; + DeleteTenantSettingsInput: ResolverTypeWrapper>; + DeleteTenantSettingsMutationResponse: ResolverTypeWrapper>; DepositAssetLiquidityInput: ResolverTypeWrapper>; DepositEventLiquidityInput: ResolverTypeWrapper>; DepositOutgoingPaymentLiquidityInput: ResolverTypeWrapper>; @@ -2014,6 +2049,7 @@ export type ResolversTypes = { TenantMutationResponse: ResolverTypeWrapper>; TenantSetting: ResolverTypeWrapper>; TenantSettingEdge: ResolverTypeWrapper>; + TenantSettingInput: ResolverTypeWrapper>; TenantSettingsConnection: ResolverTypeWrapper>; TenantsConnection: ResolverTypeWrapper>; TransferState: ResolverTypeWrapper>; @@ -2027,6 +2063,7 @@ export type ResolversTypes = { UpdatePeerInput: ResolverTypeWrapper>; UpdatePeerMutationResponse: ResolverTypeWrapper>; UpdateTenantInput: ResolverTypeWrapper>; + UpdateTenantSettingMutationResponse: ResolverTypeWrapper>; UpdateWalletAddressInput: ResolverTypeWrapper>; UpdateWalletAddressMutationResponse: ResolverTypeWrapper>; VoidLiquidityWithdrawalInput: ResolverTypeWrapper>; @@ -2094,6 +2131,8 @@ export type ResolversParentTypes = { DeletePeerInput: Partial; DeletePeerMutationResponse: Partial; DeleteTenantMutationResponse: Partial; + DeleteTenantSettingsInput: Partial; + DeleteTenantSettingsMutationResponse: Partial; DepositAssetLiquidityInput: Partial; DepositEventLiquidityInput: Partial; DepositOutgoingPaymentLiquidityInput: Partial; @@ -2151,6 +2190,7 @@ export type ResolversParentTypes = { TenantMutationResponse: Partial; TenantSetting: Partial; TenantSettingEdge: Partial; + TenantSettingInput: Partial; TenantSettingsConnection: Partial; TenantsConnection: Partial; TriggerWalletAddressEventsInput: Partial; @@ -2162,6 +2202,7 @@ export type ResolversParentTypes = { UpdatePeerInput: Partial; UpdatePeerMutationResponse: Partial; UpdateTenantInput: Partial; + UpdateTenantSettingMutationResponse: Partial; UpdateWalletAddressInput: Partial; UpdateWalletAddressMutationResponse: Partial; VoidLiquidityWithdrawalInput: Partial; @@ -2309,6 +2350,11 @@ export type DeleteTenantMutationResponseResolvers; }; +export type DeleteTenantSettingsMutationResponseResolvers = { + success?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type FeeResolvers = { assetId?: Resolver; basisPoints?: Resolver; @@ -2421,6 +2467,7 @@ export type MutationResolvers>; deletePeer?: Resolver>; deleteTenant?: Resolver>; + deleteTenantSettings?: Resolver, ParentType, ContextType, RequireFields>; depositAssetLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositOutgoingPaymentLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2433,6 +2480,7 @@ export type MutationResolvers>; updatePeer?: Resolver>; updateTenant?: Resolver>; + updateTenantSetting?: Resolver>; updateWalletAddress?: Resolver>; voidLiquidityWithdrawal?: Resolver, ParentType, ContextType, RequireFields>; withdrawEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2672,6 +2720,11 @@ export type UpdatePeerMutationResponseResolvers; }; +export type UpdateTenantSettingMutationResponseResolvers = { + setting?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type UpdateWalletAddressMutationResponseResolvers = { walletAddress?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -2786,6 +2839,7 @@ export type Resolvers = { DeleteAssetMutationResponse?: DeleteAssetMutationResponseResolvers; DeletePeerMutationResponse?: DeletePeerMutationResponseResolvers; DeleteTenantMutationResponse?: DeleteTenantMutationResponseResolvers; + DeleteTenantSettingsMutationResponse?: DeleteTenantSettingsMutationResponseResolvers; Fee?: FeeResolvers; FeeEdge?: FeeEdgeResolvers; FeesConnection?: FeesConnectionResolvers; @@ -2830,6 +2884,7 @@ export type Resolvers = { UInt8?: GraphQLScalarType; UInt64?: GraphQLScalarType; UpdatePeerMutationResponse?: UpdatePeerMutationResponseResolvers; + UpdateTenantSettingMutationResponse?: UpdateTenantSettingMutationResponseResolvers; UpdateWalletAddressMutationResponse?: UpdateWalletAddressMutationResponseResolvers; WalletAddress?: WalletAddressResolvers; WalletAddressEdge?: WalletAddressEdgeResolvers; diff --git a/packages/backend/src/graphql/generated/graphql.schema.json b/packages/backend/src/graphql/generated/graphql.schema.json index 98b490aff3..9f22f8f998 100644 --- a/packages/backend/src/graphql/generated/graphql.schema.json +++ b/packages/backend/src/graphql/generated/graphql.schema.json @@ -2187,31 +2187,23 @@ "fields": null, "inputFields": [ { - "name": "key", - "description": "Key of a new setting.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "value", - "description": "Value of a new setting.", + "name": "settings", + "description": "List of a settings for a tenant.", "type": { "kind": "NON_NULL", "name": null, "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "TenantSettingInput", + "ofType": null + } + } } }, "defaultValue": null, @@ -2705,6 +2697,56 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "INPUT_OBJECT", + "name": "DeleteTenantSettingsInput", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "key", + "description": "Key to delete from tenant settings.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "DeleteTenantSettingsMutationResponse", + "description": null, + "fields": [ + { + "name": "success", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, { "kind": "INPUT_OBJECT", "name": "DepositAssetLiquidityInput", @@ -4730,17 +4772,9 @@ "kind": "NON_NULL", "name": null, "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "CreateTenantSettingsInput", - "ofType": null - } - } + "kind": "INPUT_OBJECT", + "name": "CreateTenantSettingsInput", + "ofType": null } }, "defaultValue": null, @@ -4946,6 +4980,35 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "deleteTenantSettings", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "DeleteTenantSettingsInput", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "DeleteTenantSettingsMutationResponse", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "depositAssetLiquidity", "description": "Deposit asset liquidity.", @@ -5318,6 +5381,39 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "updateTenantSetting", + "description": "Update tenant setting.", + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "TenantSettingInput", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "UpdateTenantSettingMutationResponse", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "updateWalletAddress", "description": "Update an existing wallet address.", @@ -8449,6 +8545,49 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "INPUT_OBJECT", + "name": "TenantSettingInput", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "key", + "description": "Key for this setting.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "value", + "description": "Value of a setting for this key.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "TenantSettingsConnection", @@ -9006,6 +9145,33 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "OBJECT", + "name": "UpdateTenantSettingMutationResponse", + "description": null, + "fields": [ + { + "name": "setting", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "TenantSetting", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, { "kind": "INPUT_OBJECT", "name": "UpdateWalletAddressInput", diff --git a/packages/backend/src/graphql/generated/graphql.ts b/packages/backend/src/graphql/generated/graphql.ts index 53378fb72e..cb60ed8667 100644 --- a/packages/backend/src/graphql/generated/graphql.ts +++ b/packages/backend/src/graphql/generated/graphql.ts @@ -378,10 +378,8 @@ export type CreateTenantInput = { }; export type CreateTenantSettingsInput = { - /** Key of a new setting. */ - key: Scalars['String']['input']; - /** Value of a new setting. */ - value: Scalars['String']['input']; + /** List of a settings for a tenant. */ + settings: Array; }; export type CreateTenantSettingsMutationResponse = { @@ -473,6 +471,16 @@ export type DeleteTenantMutationResponse = { success: Scalars['Boolean']['output']; }; +export type DeleteTenantSettingsInput = { + /** Key to delete from tenant settings. */ + key?: InputMaybe; +}; + +export type DeleteTenantSettingsMutationResponse = { + __typename?: 'DeleteTenantSettingsMutationResponse'; + success: Scalars['Boolean']['output']; +}; + export type DepositAssetLiquidityInput = { /** Amount of liquidity to deposit. */ amount: Scalars['UInt64']['input']; @@ -769,6 +777,7 @@ export type Mutation = { deletePeer: DeletePeerMutationResponse; /** Delete a tenant. */ deleteTenant: DeleteTenantMutationResponse; + deleteTenantSettings?: Maybe; /** Deposit asset liquidity. */ depositAssetLiquidity?: Maybe; /** @@ -796,6 +805,8 @@ export type Mutation = { updatePeer: UpdatePeerMutationResponse; /** Update a tenant. */ updateTenant: TenantMutationResponse; + /** Update tenant setting. */ + updateTenantSetting: UpdateTenantSettingMutationResponse; /** Update an existing wallet address. */ updateWalletAddress: UpdateWalletAddressMutationResponse; /** Void liquidity withdrawal. Withdrawals are two-phase commits and are rolled back via this mutation. */ @@ -889,7 +900,7 @@ export type MutationCreateTenantArgs = { export type MutationCreateTenantSettingsArgs = { - input: Array; + input: CreateTenantSettingsInput; }; @@ -923,6 +934,11 @@ export type MutationDeleteTenantArgs = { }; +export type MutationDeleteTenantSettingsArgs = { + input: DeleteTenantSettingsInput; +}; + + export type MutationDepositAssetLiquidityArgs = { input: DepositAssetLiquidityInput; }; @@ -983,6 +999,11 @@ export type MutationUpdateTenantArgs = { }; +export type MutationUpdateTenantSettingArgs = { + input: TenantSettingInput; +}; + + export type MutationUpdateWalletAddressArgs = { input: UpdateWalletAddressInput; }; @@ -1517,6 +1538,13 @@ export type TenantSettingEdge = { node: TenantSetting; }; +export type TenantSettingInput = { + /** Key for this setting. */ + key: Scalars['String']['input']; + /** Value of a setting for this key. */ + value: Scalars['String']['input']; +}; + export type TenantSettingsConnection = { __typename?: 'TenantSettingsConnection'; /** A list of edges representing tenant settings and cursors for pagination. */ @@ -1620,6 +1648,11 @@ export type UpdateTenantInput = { publicName?: InputMaybe; }; +export type UpdateTenantSettingMutationResponse = { + __typename?: 'UpdateTenantSettingMutationResponse'; + setting: TenantSetting; +}; + export type UpdateWalletAddressInput = { /** Additional properties associated with this wallet address. */ additionalProperties?: InputMaybe>; @@ -1950,6 +1983,8 @@ export type ResolversTypes = { DeletePeerInput: ResolverTypeWrapper>; DeletePeerMutationResponse: ResolverTypeWrapper>; DeleteTenantMutationResponse: ResolverTypeWrapper>; + DeleteTenantSettingsInput: ResolverTypeWrapper>; + DeleteTenantSettingsMutationResponse: ResolverTypeWrapper>; DepositAssetLiquidityInput: ResolverTypeWrapper>; DepositEventLiquidityInput: ResolverTypeWrapper>; DepositOutgoingPaymentLiquidityInput: ResolverTypeWrapper>; @@ -2014,6 +2049,7 @@ export type ResolversTypes = { TenantMutationResponse: ResolverTypeWrapper>; TenantSetting: ResolverTypeWrapper>; TenantSettingEdge: ResolverTypeWrapper>; + TenantSettingInput: ResolverTypeWrapper>; TenantSettingsConnection: ResolverTypeWrapper>; TenantsConnection: ResolverTypeWrapper>; TransferState: ResolverTypeWrapper>; @@ -2027,6 +2063,7 @@ export type ResolversTypes = { UpdatePeerInput: ResolverTypeWrapper>; UpdatePeerMutationResponse: ResolverTypeWrapper>; UpdateTenantInput: ResolverTypeWrapper>; + UpdateTenantSettingMutationResponse: ResolverTypeWrapper>; UpdateWalletAddressInput: ResolverTypeWrapper>; UpdateWalletAddressMutationResponse: ResolverTypeWrapper>; VoidLiquidityWithdrawalInput: ResolverTypeWrapper>; @@ -2094,6 +2131,8 @@ export type ResolversParentTypes = { DeletePeerInput: Partial; DeletePeerMutationResponse: Partial; DeleteTenantMutationResponse: Partial; + DeleteTenantSettingsInput: Partial; + DeleteTenantSettingsMutationResponse: Partial; DepositAssetLiquidityInput: Partial; DepositEventLiquidityInput: Partial; DepositOutgoingPaymentLiquidityInput: Partial; @@ -2151,6 +2190,7 @@ export type ResolversParentTypes = { TenantMutationResponse: Partial; TenantSetting: Partial; TenantSettingEdge: Partial; + TenantSettingInput: Partial; TenantSettingsConnection: Partial; TenantsConnection: Partial; TriggerWalletAddressEventsInput: Partial; @@ -2162,6 +2202,7 @@ export type ResolversParentTypes = { UpdatePeerInput: Partial; UpdatePeerMutationResponse: Partial; UpdateTenantInput: Partial; + UpdateTenantSettingMutationResponse: Partial; UpdateWalletAddressInput: Partial; UpdateWalletAddressMutationResponse: Partial; VoidLiquidityWithdrawalInput: Partial; @@ -2309,6 +2350,11 @@ export type DeleteTenantMutationResponseResolvers; }; +export type DeleteTenantSettingsMutationResponseResolvers = { + success?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type FeeResolvers = { assetId?: Resolver; basisPoints?: Resolver; @@ -2421,6 +2467,7 @@ export type MutationResolvers>; deletePeer?: Resolver>; deleteTenant?: Resolver>; + deleteTenantSettings?: Resolver, ParentType, ContextType, RequireFields>; depositAssetLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositOutgoingPaymentLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2433,6 +2480,7 @@ export type MutationResolvers>; updatePeer?: Resolver>; updateTenant?: Resolver>; + updateTenantSetting?: Resolver>; updateWalletAddress?: Resolver>; voidLiquidityWithdrawal?: Resolver, ParentType, ContextType, RequireFields>; withdrawEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2672,6 +2720,11 @@ export type UpdatePeerMutationResponseResolvers; }; +export type UpdateTenantSettingMutationResponseResolvers = { + setting?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type UpdateWalletAddressMutationResponseResolvers = { walletAddress?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -2786,6 +2839,7 @@ export type Resolvers = { DeleteAssetMutationResponse?: DeleteAssetMutationResponseResolvers; DeletePeerMutationResponse?: DeletePeerMutationResponseResolvers; DeleteTenantMutationResponse?: DeleteTenantMutationResponseResolvers; + DeleteTenantSettingsMutationResponse?: DeleteTenantSettingsMutationResponseResolvers; Fee?: FeeResolvers; FeeEdge?: FeeEdgeResolvers; FeesConnection?: FeesConnectionResolvers; @@ -2830,6 +2884,7 @@ export type Resolvers = { UInt8?: GraphQLScalarType; UInt64?: GraphQLScalarType; UpdatePeerMutationResponse?: UpdatePeerMutationResponseResolvers; + UpdateTenantSettingMutationResponse?: UpdateTenantSettingMutationResponseResolvers; UpdateWalletAddressMutationResponse?: UpdateWalletAddressMutationResponseResolvers; WalletAddress?: WalletAddressResolvers; WalletAddressEdge?: WalletAddressEdgeResolvers; diff --git a/packages/backend/src/graphql/resolvers/index.ts b/packages/backend/src/graphql/resolvers/index.ts index f0f278678b..7b015179ab 100644 --- a/packages/backend/src/graphql/resolvers/index.ts +++ b/packages/backend/src/graphql/resolvers/index.ts @@ -85,7 +85,7 @@ import { getTenant, getTenants } from './tenant' -import { createTenantSettings, getTenantSettings } from './tenant_settings' +import { createTenantSettings, deleteTenantSettings, getTenantSettings } from './tenant_settings' export const resolvers: Resolvers = { UInt8: GraphQLUInt8, @@ -181,5 +181,6 @@ export const resolvers: Resolvers = { updateTenant, deleteTenant, createTenantSettings, + deleteTenantSettings } } diff --git a/packages/backend/src/graphql/resolvers/tenant_settings.test.ts b/packages/backend/src/graphql/resolvers/tenant_settings.test.ts index 861a7a659b..155190b23c 100644 --- a/packages/backend/src/graphql/resolvers/tenant_settings.test.ts +++ b/packages/backend/src/graphql/resolvers/tenant_settings.test.ts @@ -1,16 +1,17 @@ import { IocContract } from "@adonisjs/fold" import { AppServices } from "../../app" import { createTestApp, TestContainer } from "../../tests/app" -import { TenantSettingService } from "../../tenants/settings/service" import { initIocContainer } from "../.." -import { Config, IAppConfig } from "../../config/app" +import { Config } from "../../config/app" import { truncateTables } from "../../tests/tableManager" import { createTenant } from "../../tests/tenant" import { getPageTests } from "./page.test" import { createTenantSettings, randomSetting } from "../../tests/tenantSettings" -import { CreateTenantSettingsInput, CreateTenantSettingsMutationResponse } from "../generated/graphql" +import { CreateTenantSettingsInput, CreateTenantSettingsMutationResponse, DeleteTenantSettingsInput, DeleteTenantSettingsMutationResponse } from "../generated/graphql" import { ApolloClient, NormalizedCacheObject, createHttpLink, ApolloLink, InMemoryCache, gql } from "@apollo/client" import { setContext } from "@apollo/client/link/context" +import { Tenant } from "../../tenants/model" +import { TenantSettingService } from "../../tenants/settings/service" function createTenantedApolloClient( appContainer: TestContainer, @@ -51,8 +52,6 @@ function createTenantedApolloClient( describe('Tenant Settings Resolvers', (): void => { let deps: IocContract let appContainer: TestContainer - let tenantSettingsService: TenantSettingService - let config: IAppConfig beforeAll(async (): Promise => { deps = initIocContainer({ @@ -60,8 +59,6 @@ describe('Tenant Settings Resolvers', (): void => { dbSchema: 'tenant_settings_service_test_schema' }) appContainer = await createTestApp(deps) - config = await deps.use('config') - tenantSettingsService = await deps.use('tenantSettingService') const authServiceClient = await deps.use('authServiceClient') jest @@ -83,12 +80,99 @@ describe('Tenant Settings Resolvers', (): void => { await appContainer.apolloClient.stop() await appContainer.shutdown() }) + + describe('Delete Tenant Settings', (): void => { + let tenant: Tenant; + let client: ApolloClient; + let tenantSettingService: TenantSettingService; + let keys: string[] + + beforeEach(async () => { + tenant = await createTenant(deps) + client = createTenantedApolloClient(appContainer, tenant.id) + + keys = [ 'MY_KEY_1_TEST', 'MY_KEY_2_TEST' ] + + tenantSettingService = await deps.use('tenantSettingService') + await tenantSettingService.create({ + tenantId: tenant.id, + setting: keys.map(x => ({ + key: x, value: x + })) + }) + }) + + test('can delete all settings for a tenant', async (): Promise => { + const response = await client + .mutate({ + mutation: gql` + mutation DeleteTenantSettings($input: DeleteTenantSettingsInput!) { + deleteTenantSettings(input: $input) { + success + } + } + `, + variables: { + input: {} + } + }) + .then((q): DeleteTenantSettingsMutationResponse => { + if (q.data) { + return q.data.deleteTenantSettings + } + throw new Error('Data was empty') + }) + + expect(response.success).toBeTruthy() + + const data = await tenantSettingService.get({ + tenantId: tenant.id + }) + + expect(data).toEqual([]) + }) + + test('can delete tenant setting', async (): Promise => { + const workingKey = keys[0] + const input: DeleteTenantSettingsInput = { + key: workingKey + } + + const response = await client + .mutate({ + mutation: gql` + mutation DeleteTenantSettings($input: DeleteTenantSettingsInput!) { + deleteTenantSettings(input: $input) { + success + } + } + `, + variables: { input } + }) + .then((q): DeleteTenantSettingsMutationResponse => { + if (q.data) { + return q.data.deleteTenantSettings + } + throw new Error('Data was empty') + }) + + expect(response.success).toBeTruthy() + + const data = await tenantSettingService.get({ + tenantId: tenant.id, + key: workingKey + }) + + expect(data).toEqual([]) + }) + }) describe('Create Tenant Settings', (): void => { test('can create tenant setting', async (): Promise => { const input: CreateTenantSettingsInput = { - key: 'MY_KEY', - value: 'MY_VALUE' + settings: [ + { key: 'MY_KEY', value: 'MY_VALUE' } + ] } const tenant = await createTenant(deps) @@ -111,7 +195,7 @@ describe('Tenant Settings Resolvers', (): void => { }) .then((query): CreateTenantSettingsMutationResponse => { if (query.data) { - return query.data + return query.data.createTenantSettings } throw new Error('Data was empty') }) diff --git a/packages/backend/src/graphql/resolvers/tenant_settings.ts b/packages/backend/src/graphql/resolvers/tenant_settings.ts index 9c7ac511e7..5d6d863ac5 100644 --- a/packages/backend/src/graphql/resolvers/tenant_settings.ts +++ b/packages/backend/src/graphql/resolvers/tenant_settings.ts @@ -1,8 +1,10 @@ +import { GraphQLError } from "graphql"; import { TenantedApolloContext } from "../../app"; import { Pagination } from "../../shared/baseModel"; import { getPageInfo } from "../../shared/pagination"; import { TenantSetting } from "../../tenants/settings/model"; import { ResolversTypes, SortOrder, TenantResolvers, TenantSetting as SchemaTenantSetting, MutationResolvers } from "../generated/graphql"; +import { GraphQLErrorCode } from "../errors"; export const getTenantSettings: TenantResolvers['settings'] = async ( @@ -45,7 +47,7 @@ export const createTenantSettings: MutationResolvers['cre const tenantSettings = await tenantSettingService.create({ tenantId: ctx.tenant.id, - setting: args.input + setting: args.input.settings }) return { @@ -53,6 +55,53 @@ export const createTenantSettings: MutationResolvers['cre } } +export const deleteTenantSettings: MutationResolvers['deleteTenantSettings'] = + async ( + parent, + args, + ctx + ): Promise => { + const tenantSettingService = await ctx.container.use('tenantSettingService') + + try { + await tenantSettingService.delete({ + tenantId: ctx.tenant.id, + key: args.input.key + }) + + return { success: true } + }catch(err) { + throw new GraphQLError('failed to delete tenant setting', { + extensions: { + code: GraphQLErrorCode.InternalServerError + } + }) + } + } + +// export const updateTenantSetting: MutationResolvers['updateTenantSetting'] = +// async ( +// parent, +// args, +// ctx +// ): Promise => { +// const tenantSettingService = await ctx.container.use('tenantSettingService') + +// try { +// await tenantSettingService.update({ +// key: args.input.key, +// value: args.input.value, +// tenantId: ctx.tenant.id, +// }) + +// return { +// setting: tenantSettingsToGraphql({}) +// } +// }catch(err) { + +// } +// } + export const tenantSettingsToGraphql = (tenantSetting: TenantSetting): SchemaTenantSetting => ({ key: tenantSetting.key, value: tenantSetting.value diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index f052b939a3..9841140507 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -242,9 +242,13 @@ type Mutation { ): CreateWalletAddressKeyMutationResponse createTenantSettings( - input: [CreateTenantSettingsInput!]! + input: CreateTenantSettingsInput! ): CreateTenantSettingsMutationResponse + deleteTenantSettings( + input: DeleteTenantSettingsInput! + ): DeleteTenantSettingsMutationResponse + "Revoke a public key associated with a wallet address. Open Payment requests using this key for request signatures will be denied going forward." revokeWalletAddressKey( input: RevokeWalletAddressKeyInput! @@ -341,6 +345,9 @@ type Mutation { "Delete a tenant." deleteTenant(id: String!): DeleteTenantMutationResponse! + + "Update tenant setting." + updateTenantSetting(input: TenantSettingInput!): UpdateTenantSettingMutationResponse! } type PageInfo { @@ -635,9 +642,19 @@ input CreateWalletAddressKeyInput { } input CreateTenantSettingsInput { - "Key of a new setting." + "List of a settings for a tenant." + settings: [TenantSettingInput!]! +} + +input DeleteTenantSettingsInput { + "Key to delete from tenant settings." + key: String +} + +input TenantSettingInput { + "Key for this setting." key: String! - "Value of a new setting." + "Value of a setting for this key." value: String! } @@ -1649,10 +1666,18 @@ type TenantMutationResponse { tenant: Tenant! } +type UpdateTenantSettingMutationResponse { + setting: TenantSetting! +} + type DeleteTenantMutationResponse { success: Boolean! } +type DeleteTenantSettingsMutationResponse { + success: Boolean! +} + """ The `UInt8` scalar type represents unsigned 8-bit whole numeric values, ranging from 0 to 255. """ diff --git a/packages/backend/src/tenants/settings/service.ts b/packages/backend/src/tenants/settings/service.ts index 45edf9642e..da990fa0ec 100644 --- a/packages/backend/src/tenants/settings/service.ts +++ b/packages/backend/src/tenants/settings/service.ts @@ -77,13 +77,21 @@ async function getTenantSettings( return TenantSetting.query(deps.knex).whereNull('deletedAt').andWhere(options) } -async function deleteTenantSetting( +async function deleteTenantSetting( deps: ServiceDependencies, options: GetOptions, extra?: ExtraOptions ) { + // sanitize + const obj: GetOptions = { + tenantId: options.tenantId + } + + if (options.key) { + obj.key = options.key + } await TenantSetting.query(extra?.trx ?? deps.knex) - .findOne(options) + .findOne(obj) .patch({ deletedAt: new Date() }) @@ -94,7 +102,7 @@ async function updateTenantSetting( options: UpdateOptions ): Promise { await TenantSetting.query(deps.knex) - .patch({ + .patchAndFetch({ value: options.value }) .whereNull('deletedAt') diff --git a/packages/frontend/app/generated/graphql.ts b/packages/frontend/app/generated/graphql.ts index ceaa40362c..d3fadc285d 100644 --- a/packages/frontend/app/generated/graphql.ts +++ b/packages/frontend/app/generated/graphql.ts @@ -378,10 +378,8 @@ export type CreateTenantInput = { }; export type CreateTenantSettingsInput = { - /** Key of a new setting. */ - key: Scalars['String']['input']; - /** Value of a new setting. */ - value: Scalars['String']['input']; + /** List of a settings for a tenant. */ + settings: Array; }; export type CreateTenantSettingsMutationResponse = { @@ -473,6 +471,16 @@ export type DeleteTenantMutationResponse = { success: Scalars['Boolean']['output']; }; +export type DeleteTenantSettingsInput = { + /** Key to delete from tenant settings. */ + key?: InputMaybe; +}; + +export type DeleteTenantSettingsMutationResponse = { + __typename?: 'DeleteTenantSettingsMutationResponse'; + success: Scalars['Boolean']['output']; +}; + export type DepositAssetLiquidityInput = { /** Amount of liquidity to deposit. */ amount: Scalars['UInt64']['input']; @@ -769,6 +777,7 @@ export type Mutation = { deletePeer: DeletePeerMutationResponse; /** Delete a tenant. */ deleteTenant: DeleteTenantMutationResponse; + deleteTenantSettings?: Maybe; /** Deposit asset liquidity. */ depositAssetLiquidity?: Maybe; /** @@ -796,6 +805,8 @@ export type Mutation = { updatePeer: UpdatePeerMutationResponse; /** Update a tenant. */ updateTenant: TenantMutationResponse; + /** Update tenant setting. */ + updateTenantSetting: UpdateTenantSettingMutationResponse; /** Update an existing wallet address. */ updateWalletAddress: UpdateWalletAddressMutationResponse; /** Void liquidity withdrawal. Withdrawals are two-phase commits and are rolled back via this mutation. */ @@ -889,7 +900,7 @@ export type MutationCreateTenantArgs = { export type MutationCreateTenantSettingsArgs = { - input: Array; + input: CreateTenantSettingsInput; }; @@ -923,6 +934,11 @@ export type MutationDeleteTenantArgs = { }; +export type MutationDeleteTenantSettingsArgs = { + input: DeleteTenantSettingsInput; +}; + + export type MutationDepositAssetLiquidityArgs = { input: DepositAssetLiquidityInput; }; @@ -983,6 +999,11 @@ export type MutationUpdateTenantArgs = { }; +export type MutationUpdateTenantSettingArgs = { + input: TenantSettingInput; +}; + + export type MutationUpdateWalletAddressArgs = { input: UpdateWalletAddressInput; }; @@ -1517,6 +1538,13 @@ export type TenantSettingEdge = { node: TenantSetting; }; +export type TenantSettingInput = { + /** Key for this setting. */ + key: Scalars['String']['input']; + /** Value of a setting for this key. */ + value: Scalars['String']['input']; +}; + export type TenantSettingsConnection = { __typename?: 'TenantSettingsConnection'; /** A list of edges representing tenant settings and cursors for pagination. */ @@ -1620,6 +1648,11 @@ export type UpdateTenantInput = { publicName?: InputMaybe; }; +export type UpdateTenantSettingMutationResponse = { + __typename?: 'UpdateTenantSettingMutationResponse'; + setting: TenantSetting; +}; + export type UpdateWalletAddressInput = { /** Additional properties associated with this wallet address. */ additionalProperties?: InputMaybe>; @@ -1950,6 +1983,8 @@ export type ResolversTypes = { DeletePeerInput: ResolverTypeWrapper>; DeletePeerMutationResponse: ResolverTypeWrapper>; DeleteTenantMutationResponse: ResolverTypeWrapper>; + DeleteTenantSettingsInput: ResolverTypeWrapper>; + DeleteTenantSettingsMutationResponse: ResolverTypeWrapper>; DepositAssetLiquidityInput: ResolverTypeWrapper>; DepositEventLiquidityInput: ResolverTypeWrapper>; DepositOutgoingPaymentLiquidityInput: ResolverTypeWrapper>; @@ -2014,6 +2049,7 @@ export type ResolversTypes = { TenantMutationResponse: ResolverTypeWrapper>; TenantSetting: ResolverTypeWrapper>; TenantSettingEdge: ResolverTypeWrapper>; + TenantSettingInput: ResolverTypeWrapper>; TenantSettingsConnection: ResolverTypeWrapper>; TenantsConnection: ResolverTypeWrapper>; TransferState: ResolverTypeWrapper>; @@ -2027,6 +2063,7 @@ export type ResolversTypes = { UpdatePeerInput: ResolverTypeWrapper>; UpdatePeerMutationResponse: ResolverTypeWrapper>; UpdateTenantInput: ResolverTypeWrapper>; + UpdateTenantSettingMutationResponse: ResolverTypeWrapper>; UpdateWalletAddressInput: ResolverTypeWrapper>; UpdateWalletAddressMutationResponse: ResolverTypeWrapper>; VoidLiquidityWithdrawalInput: ResolverTypeWrapper>; @@ -2094,6 +2131,8 @@ export type ResolversParentTypes = { DeletePeerInput: Partial; DeletePeerMutationResponse: Partial; DeleteTenantMutationResponse: Partial; + DeleteTenantSettingsInput: Partial; + DeleteTenantSettingsMutationResponse: Partial; DepositAssetLiquidityInput: Partial; DepositEventLiquidityInput: Partial; DepositOutgoingPaymentLiquidityInput: Partial; @@ -2151,6 +2190,7 @@ export type ResolversParentTypes = { TenantMutationResponse: Partial; TenantSetting: Partial; TenantSettingEdge: Partial; + TenantSettingInput: Partial; TenantSettingsConnection: Partial; TenantsConnection: Partial; TriggerWalletAddressEventsInput: Partial; @@ -2162,6 +2202,7 @@ export type ResolversParentTypes = { UpdatePeerInput: Partial; UpdatePeerMutationResponse: Partial; UpdateTenantInput: Partial; + UpdateTenantSettingMutationResponse: Partial; UpdateWalletAddressInput: Partial; UpdateWalletAddressMutationResponse: Partial; VoidLiquidityWithdrawalInput: Partial; @@ -2309,6 +2350,11 @@ export type DeleteTenantMutationResponseResolvers; }; +export type DeleteTenantSettingsMutationResponseResolvers = { + success?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type FeeResolvers = { assetId?: Resolver; basisPoints?: Resolver; @@ -2421,6 +2467,7 @@ export type MutationResolvers>; deletePeer?: Resolver>; deleteTenant?: Resolver>; + deleteTenantSettings?: Resolver, ParentType, ContextType, RequireFields>; depositAssetLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositOutgoingPaymentLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2433,6 +2480,7 @@ export type MutationResolvers>; updatePeer?: Resolver>; updateTenant?: Resolver>; + updateTenantSetting?: Resolver>; updateWalletAddress?: Resolver>; voidLiquidityWithdrawal?: Resolver, ParentType, ContextType, RequireFields>; withdrawEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2672,6 +2720,11 @@ export type UpdatePeerMutationResponseResolvers; }; +export type UpdateTenantSettingMutationResponseResolvers = { + setting?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type UpdateWalletAddressMutationResponseResolvers = { walletAddress?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -2786,6 +2839,7 @@ export type Resolvers = { DeleteAssetMutationResponse?: DeleteAssetMutationResponseResolvers; DeletePeerMutationResponse?: DeletePeerMutationResponseResolvers; DeleteTenantMutationResponse?: DeleteTenantMutationResponseResolvers; + DeleteTenantSettingsMutationResponse?: DeleteTenantSettingsMutationResponseResolvers; Fee?: FeeResolvers; FeeEdge?: FeeEdgeResolvers; FeesConnection?: FeesConnectionResolvers; @@ -2830,6 +2884,7 @@ export type Resolvers = { UInt8?: GraphQLScalarType; UInt64?: GraphQLScalarType; UpdatePeerMutationResponse?: UpdatePeerMutationResponseResolvers; + UpdateTenantSettingMutationResponse?: UpdateTenantSettingMutationResponseResolvers; UpdateWalletAddressMutationResponse?: UpdateWalletAddressMutationResponseResolvers; WalletAddress?: WalletAddressResolvers; WalletAddressEdge?: WalletAddressEdgeResolvers; diff --git a/packages/mock-account-service-lib/src/generated/graphql.ts b/packages/mock-account-service-lib/src/generated/graphql.ts index 53378fb72e..cb60ed8667 100644 --- a/packages/mock-account-service-lib/src/generated/graphql.ts +++ b/packages/mock-account-service-lib/src/generated/graphql.ts @@ -378,10 +378,8 @@ export type CreateTenantInput = { }; export type CreateTenantSettingsInput = { - /** Key of a new setting. */ - key: Scalars['String']['input']; - /** Value of a new setting. */ - value: Scalars['String']['input']; + /** List of a settings for a tenant. */ + settings: Array; }; export type CreateTenantSettingsMutationResponse = { @@ -473,6 +471,16 @@ export type DeleteTenantMutationResponse = { success: Scalars['Boolean']['output']; }; +export type DeleteTenantSettingsInput = { + /** Key to delete from tenant settings. */ + key?: InputMaybe; +}; + +export type DeleteTenantSettingsMutationResponse = { + __typename?: 'DeleteTenantSettingsMutationResponse'; + success: Scalars['Boolean']['output']; +}; + export type DepositAssetLiquidityInput = { /** Amount of liquidity to deposit. */ amount: Scalars['UInt64']['input']; @@ -769,6 +777,7 @@ export type Mutation = { deletePeer: DeletePeerMutationResponse; /** Delete a tenant. */ deleteTenant: DeleteTenantMutationResponse; + deleteTenantSettings?: Maybe; /** Deposit asset liquidity. */ depositAssetLiquidity?: Maybe; /** @@ -796,6 +805,8 @@ export type Mutation = { updatePeer: UpdatePeerMutationResponse; /** Update a tenant. */ updateTenant: TenantMutationResponse; + /** Update tenant setting. */ + updateTenantSetting: UpdateTenantSettingMutationResponse; /** Update an existing wallet address. */ updateWalletAddress: UpdateWalletAddressMutationResponse; /** Void liquidity withdrawal. Withdrawals are two-phase commits and are rolled back via this mutation. */ @@ -889,7 +900,7 @@ export type MutationCreateTenantArgs = { export type MutationCreateTenantSettingsArgs = { - input: Array; + input: CreateTenantSettingsInput; }; @@ -923,6 +934,11 @@ export type MutationDeleteTenantArgs = { }; +export type MutationDeleteTenantSettingsArgs = { + input: DeleteTenantSettingsInput; +}; + + export type MutationDepositAssetLiquidityArgs = { input: DepositAssetLiquidityInput; }; @@ -983,6 +999,11 @@ export type MutationUpdateTenantArgs = { }; +export type MutationUpdateTenantSettingArgs = { + input: TenantSettingInput; +}; + + export type MutationUpdateWalletAddressArgs = { input: UpdateWalletAddressInput; }; @@ -1517,6 +1538,13 @@ export type TenantSettingEdge = { node: TenantSetting; }; +export type TenantSettingInput = { + /** Key for this setting. */ + key: Scalars['String']['input']; + /** Value of a setting for this key. */ + value: Scalars['String']['input']; +}; + export type TenantSettingsConnection = { __typename?: 'TenantSettingsConnection'; /** A list of edges representing tenant settings and cursors for pagination. */ @@ -1620,6 +1648,11 @@ export type UpdateTenantInput = { publicName?: InputMaybe; }; +export type UpdateTenantSettingMutationResponse = { + __typename?: 'UpdateTenantSettingMutationResponse'; + setting: TenantSetting; +}; + export type UpdateWalletAddressInput = { /** Additional properties associated with this wallet address. */ additionalProperties?: InputMaybe>; @@ -1950,6 +1983,8 @@ export type ResolversTypes = { DeletePeerInput: ResolverTypeWrapper>; DeletePeerMutationResponse: ResolverTypeWrapper>; DeleteTenantMutationResponse: ResolverTypeWrapper>; + DeleteTenantSettingsInput: ResolverTypeWrapper>; + DeleteTenantSettingsMutationResponse: ResolverTypeWrapper>; DepositAssetLiquidityInput: ResolverTypeWrapper>; DepositEventLiquidityInput: ResolverTypeWrapper>; DepositOutgoingPaymentLiquidityInput: ResolverTypeWrapper>; @@ -2014,6 +2049,7 @@ export type ResolversTypes = { TenantMutationResponse: ResolverTypeWrapper>; TenantSetting: ResolverTypeWrapper>; TenantSettingEdge: ResolverTypeWrapper>; + TenantSettingInput: ResolverTypeWrapper>; TenantSettingsConnection: ResolverTypeWrapper>; TenantsConnection: ResolverTypeWrapper>; TransferState: ResolverTypeWrapper>; @@ -2027,6 +2063,7 @@ export type ResolversTypes = { UpdatePeerInput: ResolverTypeWrapper>; UpdatePeerMutationResponse: ResolverTypeWrapper>; UpdateTenantInput: ResolverTypeWrapper>; + UpdateTenantSettingMutationResponse: ResolverTypeWrapper>; UpdateWalletAddressInput: ResolverTypeWrapper>; UpdateWalletAddressMutationResponse: ResolverTypeWrapper>; VoidLiquidityWithdrawalInput: ResolverTypeWrapper>; @@ -2094,6 +2131,8 @@ export type ResolversParentTypes = { DeletePeerInput: Partial; DeletePeerMutationResponse: Partial; DeleteTenantMutationResponse: Partial; + DeleteTenantSettingsInput: Partial; + DeleteTenantSettingsMutationResponse: Partial; DepositAssetLiquidityInput: Partial; DepositEventLiquidityInput: Partial; DepositOutgoingPaymentLiquidityInput: Partial; @@ -2151,6 +2190,7 @@ export type ResolversParentTypes = { TenantMutationResponse: Partial; TenantSetting: Partial; TenantSettingEdge: Partial; + TenantSettingInput: Partial; TenantSettingsConnection: Partial; TenantsConnection: Partial; TriggerWalletAddressEventsInput: Partial; @@ -2162,6 +2202,7 @@ export type ResolversParentTypes = { UpdatePeerInput: Partial; UpdatePeerMutationResponse: Partial; UpdateTenantInput: Partial; + UpdateTenantSettingMutationResponse: Partial; UpdateWalletAddressInput: Partial; UpdateWalletAddressMutationResponse: Partial; VoidLiquidityWithdrawalInput: Partial; @@ -2309,6 +2350,11 @@ export type DeleteTenantMutationResponseResolvers; }; +export type DeleteTenantSettingsMutationResponseResolvers = { + success?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type FeeResolvers = { assetId?: Resolver; basisPoints?: Resolver; @@ -2421,6 +2467,7 @@ export type MutationResolvers>; deletePeer?: Resolver>; deleteTenant?: Resolver>; + deleteTenantSettings?: Resolver, ParentType, ContextType, RequireFields>; depositAssetLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositOutgoingPaymentLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2433,6 +2480,7 @@ export type MutationResolvers>; updatePeer?: Resolver>; updateTenant?: Resolver>; + updateTenantSetting?: Resolver>; updateWalletAddress?: Resolver>; voidLiquidityWithdrawal?: Resolver, ParentType, ContextType, RequireFields>; withdrawEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2672,6 +2720,11 @@ export type UpdatePeerMutationResponseResolvers; }; +export type UpdateTenantSettingMutationResponseResolvers = { + setting?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type UpdateWalletAddressMutationResponseResolvers = { walletAddress?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -2786,6 +2839,7 @@ export type Resolvers = { DeleteAssetMutationResponse?: DeleteAssetMutationResponseResolvers; DeletePeerMutationResponse?: DeletePeerMutationResponseResolvers; DeleteTenantMutationResponse?: DeleteTenantMutationResponseResolvers; + DeleteTenantSettingsMutationResponse?: DeleteTenantSettingsMutationResponseResolvers; Fee?: FeeResolvers; FeeEdge?: FeeEdgeResolvers; FeesConnection?: FeesConnectionResolvers; @@ -2830,6 +2884,7 @@ export type Resolvers = { UInt8?: GraphQLScalarType; UInt64?: GraphQLScalarType; UpdatePeerMutationResponse?: UpdatePeerMutationResponseResolvers; + UpdateTenantSettingMutationResponse?: UpdateTenantSettingMutationResponseResolvers; UpdateWalletAddressMutationResponse?: UpdateWalletAddressMutationResponseResolvers; WalletAddress?: WalletAddressResolvers; WalletAddressEdge?: WalletAddressEdgeResolvers; diff --git a/test/integration/lib/generated/graphql.ts b/test/integration/lib/generated/graphql.ts index 53378fb72e..cb60ed8667 100644 --- a/test/integration/lib/generated/graphql.ts +++ b/test/integration/lib/generated/graphql.ts @@ -378,10 +378,8 @@ export type CreateTenantInput = { }; export type CreateTenantSettingsInput = { - /** Key of a new setting. */ - key: Scalars['String']['input']; - /** Value of a new setting. */ - value: Scalars['String']['input']; + /** List of a settings for a tenant. */ + settings: Array; }; export type CreateTenantSettingsMutationResponse = { @@ -473,6 +471,16 @@ export type DeleteTenantMutationResponse = { success: Scalars['Boolean']['output']; }; +export type DeleteTenantSettingsInput = { + /** Key to delete from tenant settings. */ + key?: InputMaybe; +}; + +export type DeleteTenantSettingsMutationResponse = { + __typename?: 'DeleteTenantSettingsMutationResponse'; + success: Scalars['Boolean']['output']; +}; + export type DepositAssetLiquidityInput = { /** Amount of liquidity to deposit. */ amount: Scalars['UInt64']['input']; @@ -769,6 +777,7 @@ export type Mutation = { deletePeer: DeletePeerMutationResponse; /** Delete a tenant. */ deleteTenant: DeleteTenantMutationResponse; + deleteTenantSettings?: Maybe; /** Deposit asset liquidity. */ depositAssetLiquidity?: Maybe; /** @@ -796,6 +805,8 @@ export type Mutation = { updatePeer: UpdatePeerMutationResponse; /** Update a tenant. */ updateTenant: TenantMutationResponse; + /** Update tenant setting. */ + updateTenantSetting: UpdateTenantSettingMutationResponse; /** Update an existing wallet address. */ updateWalletAddress: UpdateWalletAddressMutationResponse; /** Void liquidity withdrawal. Withdrawals are two-phase commits and are rolled back via this mutation. */ @@ -889,7 +900,7 @@ export type MutationCreateTenantArgs = { export type MutationCreateTenantSettingsArgs = { - input: Array; + input: CreateTenantSettingsInput; }; @@ -923,6 +934,11 @@ export type MutationDeleteTenantArgs = { }; +export type MutationDeleteTenantSettingsArgs = { + input: DeleteTenantSettingsInput; +}; + + export type MutationDepositAssetLiquidityArgs = { input: DepositAssetLiquidityInput; }; @@ -983,6 +999,11 @@ export type MutationUpdateTenantArgs = { }; +export type MutationUpdateTenantSettingArgs = { + input: TenantSettingInput; +}; + + export type MutationUpdateWalletAddressArgs = { input: UpdateWalletAddressInput; }; @@ -1517,6 +1538,13 @@ export type TenantSettingEdge = { node: TenantSetting; }; +export type TenantSettingInput = { + /** Key for this setting. */ + key: Scalars['String']['input']; + /** Value of a setting for this key. */ + value: Scalars['String']['input']; +}; + export type TenantSettingsConnection = { __typename?: 'TenantSettingsConnection'; /** A list of edges representing tenant settings and cursors for pagination. */ @@ -1620,6 +1648,11 @@ export type UpdateTenantInput = { publicName?: InputMaybe; }; +export type UpdateTenantSettingMutationResponse = { + __typename?: 'UpdateTenantSettingMutationResponse'; + setting: TenantSetting; +}; + export type UpdateWalletAddressInput = { /** Additional properties associated with this wallet address. */ additionalProperties?: InputMaybe>; @@ -1950,6 +1983,8 @@ export type ResolversTypes = { DeletePeerInput: ResolverTypeWrapper>; DeletePeerMutationResponse: ResolverTypeWrapper>; DeleteTenantMutationResponse: ResolverTypeWrapper>; + DeleteTenantSettingsInput: ResolverTypeWrapper>; + DeleteTenantSettingsMutationResponse: ResolverTypeWrapper>; DepositAssetLiquidityInput: ResolverTypeWrapper>; DepositEventLiquidityInput: ResolverTypeWrapper>; DepositOutgoingPaymentLiquidityInput: ResolverTypeWrapper>; @@ -2014,6 +2049,7 @@ export type ResolversTypes = { TenantMutationResponse: ResolverTypeWrapper>; TenantSetting: ResolverTypeWrapper>; TenantSettingEdge: ResolverTypeWrapper>; + TenantSettingInput: ResolverTypeWrapper>; TenantSettingsConnection: ResolverTypeWrapper>; TenantsConnection: ResolverTypeWrapper>; TransferState: ResolverTypeWrapper>; @@ -2027,6 +2063,7 @@ export type ResolversTypes = { UpdatePeerInput: ResolverTypeWrapper>; UpdatePeerMutationResponse: ResolverTypeWrapper>; UpdateTenantInput: ResolverTypeWrapper>; + UpdateTenantSettingMutationResponse: ResolverTypeWrapper>; UpdateWalletAddressInput: ResolverTypeWrapper>; UpdateWalletAddressMutationResponse: ResolverTypeWrapper>; VoidLiquidityWithdrawalInput: ResolverTypeWrapper>; @@ -2094,6 +2131,8 @@ export type ResolversParentTypes = { DeletePeerInput: Partial; DeletePeerMutationResponse: Partial; DeleteTenantMutationResponse: Partial; + DeleteTenantSettingsInput: Partial; + DeleteTenantSettingsMutationResponse: Partial; DepositAssetLiquidityInput: Partial; DepositEventLiquidityInput: Partial; DepositOutgoingPaymentLiquidityInput: Partial; @@ -2151,6 +2190,7 @@ export type ResolversParentTypes = { TenantMutationResponse: Partial; TenantSetting: Partial; TenantSettingEdge: Partial; + TenantSettingInput: Partial; TenantSettingsConnection: Partial; TenantsConnection: Partial; TriggerWalletAddressEventsInput: Partial; @@ -2162,6 +2202,7 @@ export type ResolversParentTypes = { UpdatePeerInput: Partial; UpdatePeerMutationResponse: Partial; UpdateTenantInput: Partial; + UpdateTenantSettingMutationResponse: Partial; UpdateWalletAddressInput: Partial; UpdateWalletAddressMutationResponse: Partial; VoidLiquidityWithdrawalInput: Partial; @@ -2309,6 +2350,11 @@ export type DeleteTenantMutationResponseResolvers; }; +export type DeleteTenantSettingsMutationResponseResolvers = { + success?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type FeeResolvers = { assetId?: Resolver; basisPoints?: Resolver; @@ -2421,6 +2467,7 @@ export type MutationResolvers>; deletePeer?: Resolver>; deleteTenant?: Resolver>; + deleteTenantSettings?: Resolver, ParentType, ContextType, RequireFields>; depositAssetLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; depositOutgoingPaymentLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2433,6 +2480,7 @@ export type MutationResolvers>; updatePeer?: Resolver>; updateTenant?: Resolver>; + updateTenantSetting?: Resolver>; updateWalletAddress?: Resolver>; voidLiquidityWithdrawal?: Resolver, ParentType, ContextType, RequireFields>; withdrawEventLiquidity?: Resolver, ParentType, ContextType, RequireFields>; @@ -2672,6 +2720,11 @@ export type UpdatePeerMutationResponseResolvers; }; +export type UpdateTenantSettingMutationResponseResolvers = { + setting?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type UpdateWalletAddressMutationResponseResolvers = { walletAddress?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -2786,6 +2839,7 @@ export type Resolvers = { DeleteAssetMutationResponse?: DeleteAssetMutationResponseResolvers; DeletePeerMutationResponse?: DeletePeerMutationResponseResolvers; DeleteTenantMutationResponse?: DeleteTenantMutationResponseResolvers; + DeleteTenantSettingsMutationResponse?: DeleteTenantSettingsMutationResponseResolvers; Fee?: FeeResolvers; FeeEdge?: FeeEdgeResolvers; FeesConnection?: FeesConnectionResolvers; @@ -2830,6 +2884,7 @@ export type Resolvers = { UInt8?: GraphQLScalarType; UInt64?: GraphQLScalarType; UpdatePeerMutationResponse?: UpdatePeerMutationResponseResolvers; + UpdateTenantSettingMutationResponse?: UpdateTenantSettingMutationResponseResolvers; UpdateWalletAddressMutationResponse?: UpdateWalletAddressMutationResponseResolvers; WalletAddress?: WalletAddressResolvers; WalletAddressEdge?: WalletAddressEdgeResolvers;