feat: add shareConnection mutation

This commit is contained in:
Ali BARIN
2023-11-13 10:24:24 +00:00
parent b6eea0b5fc
commit 3801f9cfa0
4 changed files with 64 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import login from './mutations/login';
import registerUser from './mutations/register-user.ee';
import resetConnection from './mutations/reset-connection';
import resetPassword from './mutations/reset-password.ee';
import shareConnection from './mutations/share-connection.ee';
import updateAppAuthClient from './mutations/update-app-auth-client.ee';
import updateAppConfig from './mutations/update-app-config.ee';
import updateConfig from './mutations/update-config.ee';
@@ -55,6 +56,7 @@ const mutationResolvers = {
registerUser,
resetConnection,
resetPassword,
shareConnection,
updateAppAuthClient,
updateAppConfig,
updateConfig,

View File

@@ -0,0 +1,55 @@
import Context from '../../types/express/context';
import Connection from '../../models/connection';
import SharedConnection from '../../models/shared-connection';
type Params = {
input: {
id: string;
roleIds: string[];
};
};
const shareConnection = async (
_parent: unknown,
params: Params,
context: Context
) => {
const conditions = context.currentUser.can('update', 'Connection');
if (conditions.isCreator) return;
const {
id,
roleIds,
} = params.input;
const connection = await Connection
.query()
.findById(id)
.throwIfNotFound();
try {
const updatedConnection = await Connection.transaction(async (trx) => {
await connection.$relatedQuery('sharedConnections', trx).delete();
if (roleIds?.length) {
const sharedConnections = roleIds.map((roleId) => ({
roleId,
connectionId: connection.id,
}));
await SharedConnection.query().insert(sharedConnections);
}
return await Connection
.query(trx)
.findById(id);
});
return updatedConnection;
} catch (err) {
throw new Error('The connection sharing preferences could not be updated!');
}
};
export default shareConnection;

View File

@@ -84,6 +84,7 @@ type Mutation {
registerUser(input: RegisterUserInput): User
resetConnection(input: ResetConnectionInput): Connection
resetPassword(input: ResetPasswordInput): Boolean
shareConnection(input: ShareConnectionInput): Connection
updateAppAuthClient(input: UpdateAppAuthClientInput): AppAuthClient
updateAppConfig(input: UpdateAppConfigInput): AppConfig
updateConfig(input: JSONObject): JSONObject
@@ -812,6 +813,11 @@ input ExecutionFiltersInput {
status: String
}
input ShareConnectionInput {
id: String!
roleIds: [String]
}
schema {
query: Query
mutation: Mutation

View File

@@ -11,7 +11,7 @@ class SharedConnection extends Base {
static jsonSchema = {
type: 'object',
required: ['name', 'key'],
required: ['roleId', 'connectionId'],
properties: {
id: { type: 'string', format: 'uuid' },