fix: Correct SurrealDB record creation to use table+ID array format

The SurrealDB JavaScript client was interpreting "node:uuid" as a table name
instead of a record ID, creating separate schemaless tables for each node.

Changed from:
  db.create("node:uuid", data)

To:
  db.create(['node', 'uuid'], data)

This ensures nodes are created as records in the main 'node' table with the
specified UUID, not as separate tables.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-09 19:09:19 +00:00
parent d0978f5f7f
commit 3119d27c0d

View File

@@ -1,6 +1,7 @@
import { NextRequest, NextResponse } from 'next/server';
import { cookies } from 'next/headers';
import { RichText, Agent } from '@atproto/api';
import { RecordId } from 'surrealdb';
import { connectToDB } from '@/lib/db';
import { generateEmbedding } from '@/lib/ai';
import { verifySurrealJwt } from '@/lib/auth/jwt';
@@ -43,7 +44,8 @@ export async function POST(request: NextRequest) {
const createdAt = new Date().toISOString();
// Generate a unique node ID upfront (we'll use this for the detail page link)
const nodeId = `node:${crypto.randomUUID()}`;
const nodeUuid = crypto.randomUUID();
const nodeId = `node:${nodeUuid}`;
const detailUrl = `${process.env.NEXT_PUBLIC_APP_URL || 'https://ponderants.app'}/galaxy/${encodeURIComponent(nodeId)}`;
// --- Step 1: Write to Source of Truth (ATproto) ---
@@ -235,7 +237,9 @@ export async function POST(request: NextRequest) {
nodeData.embedding = embedding;
}
const newNode = await db.create(nodeId, nodeData);
// Use RecordId object to specify table and ID separately
// SurrealDB client expects RecordId object, not 'table:id' string
const newNode = await db.create(new RecordId('node', nodeUuid), nodeData);
// Handle linking
if (links && links.length > 0) {