Skip to content

Commit

Permalink
Fix db
Browse files Browse the repository at this point in the history
  • Loading branch information
Rigidity committed Jan 6, 2025
1 parent e223838 commit 3c0a4d0
Showing 1 changed file with 14 additions and 17 deletions.
31 changes: 14 additions & 17 deletions migrations/0006_nft_search_indices.sql
Original file line number Diff line number Diff line change
Expand Up @@ -22,33 +22,30 @@ CREATE INDEX `nft_did_recent` ON `nfts` (
-- Create FTS5 virtual table for name searching
CREATE VIRTUAL TABLE `nft_name_fts` USING fts5(
name,
launcher_id UNINDEXED, -- We store but don't index these columns
content='nfts',
content_rowid='rowid'
nft_rowid UNINDEXED, -- Store the nfts table rowid explicitly
launcher_id UNINDEXED
);

-- Populate FTS table with existing NFT names
INSERT INTO nft_name_fts(rowid, name, launcher_id)
SELECT rowid, name, launcher_id
INSERT INTO nft_name_fts(name, nft_rowid, launcher_id)
SELECT name, rowid, launcher_id
FROM nfts
WHERE name IS NOT NULL;
WHERE name IS NOT NULL AND name != '';

-- Create triggers to keep FTS table in sync
-- Modified triggers with additional safety checks
CREATE TRIGGER nfts_ai AFTER INSERT ON nfts BEGIN
INSERT INTO nft_name_fts(rowid, name, launcher_id)
SELECT NEW.rowid, NEW.name, NEW.launcher_id
WHERE NEW.name IS NOT NULL;
INSERT INTO nft_name_fts(name, nft_rowid, launcher_id)
SELECT NEW.name, NEW.rowid, NEW.launcher_id
WHERE NEW.name IS NOT NULL AND NEW.name != '';
END;

CREATE TRIGGER nfts_ad AFTER DELETE ON nfts BEGIN
INSERT INTO nft_name_fts(nft_name_fts, rowid, name, launcher_id)
VALUES('delete', OLD.rowid, OLD.name, OLD.launcher_id);
DELETE FROM nft_name_fts WHERE nft_rowid = OLD.rowid;
END;

CREATE TRIGGER nfts_au AFTER UPDATE ON nfts BEGIN
INSERT INTO nft_name_fts(nft_name_fts, rowid, name, launcher_id)
VALUES('delete', OLD.rowid, OLD.name, OLD.launcher_id);
INSERT INTO nft_name_fts(rowid, name, launcher_id)
SELECT NEW.rowid, NEW.name, NEW.launcher_id
WHERE NEW.name IS NOT NULL;
DELETE FROM nft_name_fts WHERE nft_rowid = OLD.rowid;
INSERT INTO nft_name_fts(name, nft_rowid, launcher_id)
SELECT NEW.name, NEW.rowid, NEW.launcher_id
WHERE NEW.name IS NOT NULL AND NEW.name != '';
END;

0 comments on commit 3c0a4d0

Please sign in to comment.