import 'package:lensai/features/topics/data/database/drift/converters/color.dart'; import 'package:lensai/features/topics/data/database/drift/converters/uri.dart'; import 'package:lensai/features/topics/data/models/topic_data.dart'; CREATE TABLE topic ( id TEXT PRIMARY KEY NOT NULL, name TEXT, color INTEGER NOT NULL MAPPED BY `const ColorConverter()` ) WITH TopicData; CREATE TABLE tab ( id TEXT PRIMARY KEY NOT NULL, topic_id TEXT REFERENCES topic (id) ON DELETE CASCADE, timestamp DATETIME NOT NULL, url TEXT NOT NULL MAPPED BY `const UriConverter()`, title TEXT, screenshot BLOB ); topicsWithCount WITH TopicDataWithCount: SELECT topic.*, tab_agg.tab_count FROM topic LEFT JOIN ( SELECT topic_id, COUNT(*) AS tab_count, MAX(timestamp) AS last_updated FROM tab GROUP BY topic_id ) AS tab_agg ON topic.id = tab_agg.topic_id ORDER BY tab_agg.last_updated DESC NULLS FIRST;