Files
automatisch/packages/backend/src/graphql/mutations/update-config.ts
2023-08-11 08:29:57 +00:00

45 lines
871 B
TypeScript

import type { IJSONValue } from '@automatisch/types';
import Config from '../../models/config';
import Context from '../../types/express/context';
type Params = {
input: {
[index: string]: IJSONValue;
};
};
const updateConfig = async (_parent: unknown, params: Params, context: Context) => {
context.currentUser.can('update', 'Config');
const config = params.input;
const configKeys = Object.keys(config);
const updates = [];
for (const key of configKeys) {
const newValue = config[key];
const entryUpdate = Config
.query()
.insert({
key,
value: {
data: newValue
}
})
.onConflict('key')
.merge({
value: {
data: newValue
}
});
updates.push(entryUpdate);
}
await Promise.all(updates);
return config;
};
export default updateConfig;