import 'dart:convert'; import 'package:drift/drift.dart'; import 'package:surface/types/attachment.dart'; class SnStickerConverter extends TypeConverter with JsonTypeConverter2> { const SnStickerConverter(); @override SnSticker fromSql(String fromDb) { return fromJson(jsonDecode(fromDb) as Map); } @override String toSql(SnSticker value) { return jsonEncode(toJson(value)); } @override SnSticker fromJson(Map json) { return SnSticker.fromJson(json); } @override Map toJson(SnSticker value) { return value.toJson(); } } class SnLocalSticker extends Table { IntColumn get id => integer().autoIncrement()(); TextColumn get alias => text()(); TextColumn get fullAlias => text()(); TextColumn get content => text().map(const SnStickerConverter())(); DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)(); } class SnStickerPackConverter extends TypeConverter with JsonTypeConverter2> { const SnStickerPackConverter(); @override SnStickerPack fromSql(String fromDb) { return fromJson(jsonDecode(fromDb) as Map); } @override String toSql(SnStickerPack value) { return jsonEncode(toJson(value)); } @override SnStickerPack fromJson(Map json) { return SnStickerPack.fromJson(json); } @override Map toJson(SnStickerPack value) { return value.toJson(); } } class SnLocalStickerPack extends Table { IntColumn get id => integer().autoIncrement()(); TextColumn get content => text().map(const SnStickerPackConverter())(); DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)(); }