mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-09-07 02:17:22 +02:00
Yaak now remembers, per item of a linked import source, whether the user wants it. A mapping row that still points at a model means wanted, so re-imports merge into it; a row with no model behind it means not wanted, so re-imports leave it alone. Wanted-ness is structural rather than a flag: deleting the model locally, or turning the item down in the preview, is what makes it not wanted. - import_source_resources drops `snapshot` for a nullable `content_hash` and lets `model_id` be NULL. The migration keeps every beta row's key to model mapping and starts hashes empty; until a hash is recorded, a difference can't be attributed to either side, so the item is offered once as a conflict that keeps local changes. - comparable() ignores sortPriority. Importers number it from source order, so inserting one operation used to plan a fake update for everything after it. The trade is that pure reorders don't propagate. - Keys the user turned down come back as unchecked "not imported" rows instead of being re-offered as new resources or resurrected. Checking one imports it under the same source key and pulls in the folders it needs. - An imported resource the source moves into a folder that isn't imported is offered as a deletion, with a tooltip pointing at the folder. - Plan-time source resolution binds by source-key overlap instead of by path, so a renamed or moved file merges into what it created and heals the stored origin. Several sources sharing keys never guess-merge: the plan says so and imports everything as new. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
25 lines
1.1 KiB
SQL
25 lines
1.1 KiB
SQL
-- Replace the per-resource snapshot with a content hash, and let a row exist without a model
|
|
-- so a resource the user chose not to import can be remembered.
|
|
CREATE TABLE import_source_resources_new
|
|
(
|
|
model TEXT DEFAULT 'import_source_resource' NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
import_source_id TEXT NOT NULL,
|
|
source_key TEXT NOT NULL,
|
|
model_type TEXT NOT NULL,
|
|
model_id TEXT,
|
|
content_hash TEXT,
|
|
PRIMARY KEY (import_source_id, source_key)
|
|
);
|
|
|
|
INSERT INTO import_source_resources_new (model, created_at, updated_at, import_source_id,
|
|
source_key, model_type, model_id, content_hash)
|
|
SELECT model, created_at, updated_at, import_source_id, source_key, model_type, model_id, NULL
|
|
FROM import_source_resources;
|
|
|
|
DROP TABLE import_source_resources;
|
|
|
|
ALTER TABLE import_source_resources_new
|
|
RENAME TO import_source_resources;
|