mirror of
https://github.com/colanode/colanode.git
synced 2025-12-28 16:06:37 +01:00
62 lines
1.4 KiB
TypeScript
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,
|
|
};
|
|
}
|
|
}
|