mirror of
https://github.com/perstarkse/minne.git
synced 2026-05-30 03:10:45 +02:00
chore: harden knowledge graph storage and clear common clippy warnings
Enforce stable 1:1 entity embeddings, relationship endpoint auth, and user-scoped deletes; align schemas/migrations and resolve common crate clippy findings.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
-- Harden knowledge entity embeddings and graph storage invariants.
|
||||
|
||||
DEFINE FIELD IF NOT EXISTS source_id ON knowledge_entity_embedding TYPE string;
|
||||
|
||||
-- Backfill denormalized source_id from the linked entity.
|
||||
FOR $emb IN (SELECT * FROM knowledge_entity_embedding WHERE source_id = NONE OR source_id = '') {
|
||||
LET $entity = (SELECT source_id FROM $emb.entity_id)[0];
|
||||
IF $entity != NONE {
|
||||
UPDATE $emb.id SET source_id = $entity.source_id;
|
||||
}
|
||||
};
|
||||
|
||||
-- Re-key embeddings so record id matches entity id (stable 1:1 identity).
|
||||
FOR $emb IN (SELECT * FROM knowledge_entity_embedding) {
|
||||
LET $entity_key = record::id($emb.entity_id);
|
||||
LET $canonical = type::thing('knowledge_entity_embedding', $entity_key);
|
||||
IF $emb.id != $canonical {
|
||||
UPSERT $canonical CONTENT {
|
||||
entity_id: $emb.entity_id,
|
||||
embedding: $emb.embedding,
|
||||
user_id: $emb.user_id,
|
||||
source_id: $emb.source_id,
|
||||
created_at: $emb.created_at,
|
||||
updated_at: $emb.updated_at
|
||||
};
|
||||
DELETE $emb.id;
|
||||
}
|
||||
};
|
||||
|
||||
REMOVE INDEX IF EXISTS knowledge_entity_embedding_entity_id_idx ON knowledge_entity_embedding;
|
||||
DEFINE INDEX IF NOT EXISTS knowledge_entity_embedding_entity_id_idx ON knowledge_entity_embedding FIELDS entity_id UNIQUE;
|
||||
DEFINE INDEX IF NOT EXISTS knowledge_entity_embedding_source_id_idx ON knowledge_entity_embedding FIELDS source_id;
|
||||
DEFINE INDEX IF NOT EXISTS knowledge_entity_user_source_idx ON knowledge_entity FIELDS user_id, source_id;
|
||||
Reference in New Issue
Block a user