2025-02-22 20:43:24 +08:00
|
|
|
import 'dart:convert';
|
|
|
|
|
2025-02-22 16:22:33 +08:00
|
|
|
import 'package:drift/drift.dart';
|
|
|
|
import 'package:surface/types/chat.dart';
|
|
|
|
|
2025-02-22 20:43:24 +08:00
|
|
|
class SnChannelConverter extends TypeConverter<SnChannel, String>
|
|
|
|
with JsonTypeConverter2<SnChannel, String, Map<String, Object?>> {
|
|
|
|
const SnChannelConverter();
|
|
|
|
|
|
|
|
@override
|
|
|
|
SnChannel fromSql(String fromDb) {
|
|
|
|
return fromJson(jsonDecode(fromDb) as Map<String, dynamic>);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
String toSql(SnChannel value) {
|
|
|
|
return jsonEncode(toJson(value));
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
SnChannel fromJson(Map<String, Object?> json) {
|
|
|
|
return SnChannel.fromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Map<String, Object?> toJson(SnChannel value) {
|
|
|
|
return value.toJson();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-02-22 16:22:33 +08:00
|
|
|
class SnLocalChatChannel extends Table {
|
|
|
|
IntColumn get id => integer().autoIncrement()();
|
|
|
|
|
2025-02-22 20:43:24 +08:00
|
|
|
TextColumn get alias => text()();
|
|
|
|
|
|
|
|
TextColumn get content => text().map(const SnChannelConverter())();
|
2025-02-22 16:22:33 +08:00
|
|
|
|
|
|
|
DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)();
|
|
|
|
}
|
|
|
|
|
2025-02-22 20:43:24 +08:00
|
|
|
class SnMessageConverter extends TypeConverter<SnChatMessage, String>
|
|
|
|
with JsonTypeConverter2<SnChatMessage, String, Map<String, Object?>> {
|
|
|
|
const SnMessageConverter();
|
|
|
|
|
|
|
|
@override
|
|
|
|
SnChatMessage fromSql(String fromDb) {
|
|
|
|
return fromJson(jsonDecode(fromDb) as Map<String, dynamic>);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
String toSql(SnChatMessage value) {
|
|
|
|
return jsonEncode(toJson(value));
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
SnChatMessage fromJson(Map<String, Object?> json) {
|
|
|
|
return SnChatMessage.fromJson(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Map<String, Object?> toJson(SnChatMessage value) {
|
|
|
|
return value.toJson();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-02-22 16:22:33 +08:00
|
|
|
class SnLocalChatMessage extends Table {
|
|
|
|
IntColumn get id => integer().autoIncrement()();
|
|
|
|
|
|
|
|
IntColumn get channelId => integer()();
|
|
|
|
|
2025-02-22 20:43:24 +08:00
|
|
|
TextColumn get content => text().map(const SnMessageConverter())();
|
2025-02-22 16:22:33 +08:00
|
|
|
|
|
|
|
DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)();
|
2025-02-22 20:43:24 +08:00
|
|
|
}
|