Compare commits
3 commits
43a70929ec
...
a23f836358
| Author | SHA1 | Date | |
|---|---|---|---|
| a23f836358 | |||
| 3c1b7a094d | |||
| 60654d5d2f |
4 changed files with 32 additions and 8 deletions
|
|
@ -164,6 +164,16 @@ export async function deleteField(
|
|||
await api.delete(`/api/v1/admin/fields/${fieldId}`);
|
||||
}
|
||||
|
||||
export async function listViews(
|
||||
tableId: number,
|
||||
bridgeUrl?: string | null,
|
||||
): Promise<Array<{ id: number; name: string; type: string }>> {
|
||||
const api = getBridgeClient(resolveBridgeUrl(bridgeUrl));
|
||||
return unwrap<Array<{ id: number; name: string; type: string }>>(
|
||||
api.get(`/api/v1/admin/tables/${tableId}/views`),
|
||||
);
|
||||
}
|
||||
|
||||
export async function createView(
|
||||
tableId: number,
|
||||
payload: { name: string; type: 'grid' | 'gallery' | 'kanban' | 'calendar' | 'timeline' | 'form' },
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import {
|
|||
createDatabase,
|
||||
createTable,
|
||||
createField,
|
||||
listViews,
|
||||
} from "../services/admin-client";
|
||||
|
||||
type Step = "name" | "fields" | "creating";
|
||||
|
|
@ -184,15 +185,24 @@ export function CreateDatabaseModal({
|
|||
await createField(table.id, payload as never, bridgeUrl);
|
||||
}
|
||||
|
||||
// Step 4: insert the new table as a Tiptap node into the editor.
|
||||
// We don't have a viewId here yet — Baserow auto-creates a default Grid
|
||||
// view at table creation. We let the rendererfetch the first view.
|
||||
// Step 4: resolve the auto-created Grid view of the new table, then
|
||||
// insert the embed node with a real viewId (without it the renderer
|
||||
// shows "No rows found in this view").
|
||||
const views = await listViews(table.id, bridgeUrl);
|
||||
const defaultView =
|
||||
views.find((v) => v.type === "grid") ?? views[0] ?? null;
|
||||
if (!defaultView) {
|
||||
throw new Error(
|
||||
"Table creee mais aucune vue par defaut trouvee. Reessayez ou contactez un admin.",
|
||||
);
|
||||
}
|
||||
|
||||
editor
|
||||
.chain()
|
||||
.focus()
|
||||
.insertDatabaseView({
|
||||
tableId: String(table.id),
|
||||
viewId: "",
|
||||
viewId: String(defaultView.id),
|
||||
viewType: "grid",
|
||||
bridgeUrl: bridgeUrl ?? null,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ export class BacklinkIndexerService {
|
|||
let page: { content: any; workspaceId: string } | null = null;
|
||||
|
||||
try {
|
||||
const result = await sql<{ content: any; workspace_id: string }>`
|
||||
// Kysely's CamelCasePlugin (configured in database.module.ts) maps
|
||||
// snake_case columns to camelCase keys at runtime, so the row type
|
||||
// must reflect the post-plugin shape.
|
||||
const result = await sql<{ content: any; workspaceId: string }>`
|
||||
SELECT p.content, s.workspace_id
|
||||
FROM pages p
|
||||
JOIN spaces s ON s.id = p.space_id
|
||||
|
|
@ -51,7 +54,7 @@ export class BacklinkIndexerService {
|
|||
|
||||
page = {
|
||||
content: result.rows[0].content,
|
||||
workspaceId: result.rows[0].workspace_id,
|
||||
workspaceId: result.rows[0].workspaceId,
|
||||
};
|
||||
} catch (err) {
|
||||
this.logger.error(
|
||||
|
|
|
|||
|
|
@ -137,8 +137,9 @@ export class BacklinkParserService {
|
|||
});
|
||||
}
|
||||
|
||||
// --- R3.1.c databaseView node (embed links a page indirectly via pageId attr) ---
|
||||
if (type === 'databaseView' && attrs.pageId) {
|
||||
// --- R3.1.c database-view node (embed links a page indirectly via pageId attr) ---
|
||||
// The shared schema in @docmost/editor-ext uses kebab-case as the node name.
|
||||
if (type === 'database-view' && attrs.pageId) {
|
||||
out.push({
|
||||
linkType: 'database_embed',
|
||||
pageId: attrs.pageId,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue