mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-21 20:11:43 +08:00
ce87dcf58e
1. **Major Architectural Change: Schema Management**
- Moved from `workspace.schema` to `store.schema` throughout the codebase
- Removed schema property from Workspace and Doc interfaces
- Added `BlockSchemaExtension` pattern across multiple block types
2. **Block Schema Extensions Added**
- Added new `BlockSchemaExtension` to numerous block types including:
- DataView, Surface, Attachment, Bookmark, Code
- Database, Divider, EdgelessText, Embed blocks (Figma, Github, HTML, etc.)
- Frame, Image, Latex, List, Note, Paragraph
- Root, Surface Reference, Table blocks
3. **Import/Export System Updates**
- Updated import functions to accept `schema` parameter:
- `importHTMLToDoc`
- `importHTMLZip`
- `importMarkdownToDoc`
- `importMarkdownZip`
- `importNotionZip`
- Modified export functions to use new schema pattern
4. **Test Infrastructure Updates**
- Updated test files to use new schema extensions
- Modified test document creation to include schema extensions
- Removed direct schema registration in favor of extensions
5. **Service Layer Changes**
- Updated various services to use `getAFFiNEWorkspaceSchema()`
- Modified transformer initialization to use document schema
- Updated collection initialization patterns
6. **Version Management**
- Removed version-related properties and methods from:
- `WorkspaceMetaImpl`
- `TestMeta`
- `DocImpl`
- Removed `blockVersions` and `workspaceVersion/pageVersion`
7. **Store and Extension Updates**
- Added new store extensions and adapters
- Updated store initialization patterns
- Added new schema-related functionality in store extension
This PR represents a significant architectural shift in how schemas are managed, moving from a workspace-centric to a store-centric approach, while introducing a more extensible block schema system through `BlockSchemaExtension`. The changes touch multiple layers of the application including core functionality, services, testing infrastructure, and import/export capabilities.
38 lines
847 B
TypeScript
38 lines
847 B
TypeScript
import { BlockSchemaExtension } from '@blocksuite/store';
|
|
|
|
import { createEmbedBlockSchema } from '../../../utils/index.js';
|
|
import {
|
|
type EmbedGithubBlockProps,
|
|
EmbedGithubModel,
|
|
EmbedGithubStyles,
|
|
} from './github-model.js';
|
|
|
|
const defaultEmbedGithubProps: EmbedGithubBlockProps = {
|
|
style: EmbedGithubStyles[1],
|
|
owner: '',
|
|
repo: '',
|
|
githubType: 'issue',
|
|
githubId: '',
|
|
url: '',
|
|
caption: null,
|
|
|
|
image: null,
|
|
status: null,
|
|
statusReason: null,
|
|
title: null,
|
|
description: null,
|
|
createdAt: null,
|
|
assignees: null,
|
|
};
|
|
|
|
export const EmbedGithubBlockSchema = createEmbedBlockSchema({
|
|
name: 'github',
|
|
version: 1,
|
|
toModel: () => new EmbedGithubModel(),
|
|
props: (): EmbedGithubBlockProps => defaultEmbedGithubProps,
|
|
});
|
|
|
|
export const EmbedGithubBlockSchemaExtension = BlockSchemaExtension(
|
|
EmbedGithubBlockSchema
|
|
);
|