Files
colanode/apps/desktop/src/main/mutations/database-create.ts
2024-11-22 20:05:25 +01:00

62 lines
1.4 KiB
TypeScript

import {
generateId,
IdType,
DatabaseAttributes,
generateNodeIndex,
} from '@colanode/core';
import { MutationHandler } from '@/main/types';
import {
DatabaseCreateMutationInput,
DatabaseCreateMutationOutput,
} from '@/shared/mutations/database-create';
import { nodeService } from '@/main/services/node-service';
export class DatabaseCreateMutationHandler
implements MutationHandler<DatabaseCreateMutationInput>
{
async handleMutation(
input: DatabaseCreateMutationInput
): Promise<DatabaseCreateMutationOutput> {
const databaseId = generateId(IdType.Database);
const viewId = generateId(IdType.View);
const fieldId = generateId(IdType.Field);
const attributes: DatabaseAttributes = {
type: 'database',
name: input.name,
avatar: input.avatar,
parentId: input.spaceId,
fields: {
[fieldId]: {
id: fieldId,
type: 'text',
index: generateNodeIndex(null, null),
name: 'Comment',
},
},
views: {
[viewId]: {
id: viewId,
type: 'table',
name: 'Default',
fields: {},
filters: {},
sorts: {},
avatar: null,
index: generateNodeIndex(null, null),
groupBy: null,
},
},
};
await nodeService.createNode(input.userId, {
id: databaseId,
attributes,
});
return {
id: databaseId,
};
}
}