mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-18 02:26:21 +08:00
60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
import {
|
|
type DatabaseBlockModel,
|
|
DatabaseBlockSchema,
|
|
} from '@blocksuite/affine-model';
|
|
import { BlockService } from '@blocksuite/block-std';
|
|
import { viewPresets } from '@blocksuite/data-view/view-presets';
|
|
import type { BlockModel, Store } from '@blocksuite/store';
|
|
|
|
import {
|
|
databaseViewAddView,
|
|
databaseViewInitEmpty,
|
|
databaseViewInitTemplate,
|
|
} from './data-source.js';
|
|
import {
|
|
addProperty,
|
|
applyPropertyUpdate,
|
|
updateCell,
|
|
updateView,
|
|
} from './utils/block-utils.js';
|
|
|
|
export class DatabaseBlockService extends BlockService {
|
|
static override readonly flavour = DatabaseBlockSchema.model.flavour;
|
|
|
|
addColumn = addProperty;
|
|
|
|
applyColumnUpdate = applyPropertyUpdate;
|
|
|
|
databaseViewAddView = databaseViewAddView;
|
|
|
|
databaseViewInitEmpty = databaseViewInitEmpty;
|
|
|
|
updateCell = updateCell;
|
|
|
|
updateView = updateView;
|
|
|
|
viewPresets = viewPresets;
|
|
|
|
initDatabaseBlock(
|
|
doc: Store,
|
|
model: BlockModel,
|
|
databaseId: string,
|
|
viewType: string,
|
|
isAppendNewRow = true
|
|
) {
|
|
const blockModel = doc.getBlock(databaseId)?.model as
|
|
| DatabaseBlockModel
|
|
| undefined;
|
|
if (!blockModel) {
|
|
return;
|
|
}
|
|
databaseViewInitTemplate(blockModel, viewType);
|
|
if (isAppendNewRow) {
|
|
const parent = doc.getParent(model);
|
|
if (!parent) return;
|
|
doc.addBlock('affine:paragraph', {}, parent.id);
|
|
}
|
|
applyPropertyUpdate(blockModel);
|
|
}
|
|
}
|