topics intermediate
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:lensai/features/topics/data/database/database.dart';
|
||||
import 'package:lensai/features/web_view/domain/entities/abstract/tab.dart';
|
||||
|
||||
part 'tab.g.dart';
|
||||
|
||||
@DriftAccessor()
|
||||
class TabDao extends DatabaseAccessor<TabDatabase> with _$TabDaoMixin {
|
||||
TabDao(super.db);
|
||||
|
||||
Future<void> upsertTab(ITab tab) {
|
||||
return db.tab.insertOne(
|
||||
TabCompanion.insert(
|
||||
id: tab.id,
|
||||
timestamp: DateTime.now(),
|
||||
url: tab.url,
|
||||
topicId: Value(tab.topicId),
|
||||
title: Value(tab.title),
|
||||
screenshot: Value(tab.screenshot),
|
||||
),
|
||||
mode: InsertMode.insertOrReplace,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> updateTab(
|
||||
String id, {
|
||||
Value<Uri> url = const Value.absent(),
|
||||
Value<String?> title = const Value.absent(),
|
||||
Value<String?> topicId = const Value.absent(),
|
||||
Value<Uint8List?> screenshot = const Value.absent(),
|
||||
}) {
|
||||
final statement = db.tab.update()..where((t) => t.id.equals(id));
|
||||
|
||||
return statement.write(
|
||||
TabCompanion(
|
||||
timestamp: Value(DateTime.now()),
|
||||
url: url,
|
||||
title: title,
|
||||
topicId: topicId,
|
||||
screenshot: screenshot,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'tab.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
mixin _$TabDaoMixin on DatabaseAccessor<TabDatabase> {}
|
||||
@@ -0,0 +1,53 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:lensai/core/uuid.dart';
|
||||
import 'package:lensai/features/topics/data/database/database.dart';
|
||||
|
||||
part 'topic.g.dart';
|
||||
|
||||
@DriftAccessor()
|
||||
class TopicDao extends DatabaseAccessor<TabDatabase> with _$TopicDaoMixin {
|
||||
TopicDao(super.db);
|
||||
|
||||
Future<void> addTopic({String? name, required Color color}) {
|
||||
return db.topic.insertOne(
|
||||
TopicCompanion.insert(
|
||||
id: uuid.v7(),
|
||||
name: Value(name),
|
||||
color: color,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> replaceTopic(
|
||||
String id, {
|
||||
required String? name,
|
||||
required Color color,
|
||||
}) {
|
||||
return db.topic.replaceOne(
|
||||
TopicCompanion(
|
||||
id: Value(id),
|
||||
name: Value(name),
|
||||
color: Value(color),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> deleteTopic(String id) {
|
||||
return db.topic.deleteOne(TopicCompanion.custom(id: Variable(id)));
|
||||
}
|
||||
|
||||
SingleOrNullSelectable<TopicData> getTopicData(String id) {
|
||||
return select(db.topic)..where((t) => t.id.equals(id));
|
||||
}
|
||||
|
||||
Selectable<Color> getDistinctColors() {
|
||||
final query = db.selectOnly(db.topic, distinct: true)
|
||||
..addColumns([db.topic.color])
|
||||
..where(db.topic.color.isNotNull());
|
||||
|
||||
return query
|
||||
.map((row) => row.readWithConverter<Color?, int>(db.topic.color)!);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'topic.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
mixin _$TopicDaoMixin on DatabaseAccessor<TabDatabase> {}
|
||||
Reference in New Issue
Block a user