Erweiterungen

This commit is contained in:
Sven committed 2024-02-08 14:30:30 +01:00
1 parent 47f31b7a5a
commit c69a5644a1
5 files changed
+128 -18

No files matched your search

+22
View File
@@ -1,5 +1,6 @@
import 'package:isar/isar.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:stadtbote/main.dart';
import 'package:stadtbote/tools/util.dart';
part 'message.g.dart';
@@ -17,12 +18,33 @@ class Message {
late List<String> text;
late bool? read = false;
Message();
factory Message.fromJson(Map<String, dynamic> json) => _$MessageFromJson(json);
Map<String, dynamic> toJson() => _$MessageToJson(this);
static Future<Message> mergeFromJson(Map<String, dynamic> json) async {
var availableMessage = await MyApp.isarInstance.messages.filter().idEqualTo(json["id"]).findFirst();
if (availableMessage != null) {
availableMessage.id = json["id"];
availableMessage.time = json["time"];
availableMessage.from = json["from"];
availableMessage.subj = json["subj"];
availableMessage.text = (json['text'] as List<dynamic>).map((e) => e as String).toList();
return availableMessage;
} else {
var message = Message.fromJson(json);
message.read = false;
return message;
}
}
static Future<int> getNextId() async {
int currentExport500Id = await Util.preferencesGetInt('next_message_id', 0) as int;
+85 -12
View File
@@ -22,18 +22,23 @@ const MessageSchema = CollectionSchema(
name: r'from',
type: IsarType.string,
),
r'subj': PropertySchema(
r'read': PropertySchema(
id: 1,
name: r'read',
type: IsarType.bool,
),
r'subj': PropertySchema(
id: 2,
name: r'subj',
type: IsarType.string,
),
r'text': PropertySchema(
id: 2,
id: 3,
name: r'text',
type: IsarType.stringList,
),
r'time': PropertySchema(
id: 3,
id: 4,
name: r'time',
type: IsarType.string,
)
@@ -78,9 +83,10 @@ void _messageSerialize(
Map<Type, List<int>> allOffsets,
) {
writer.writeString(offsets[0], object.from);
writer.writeString(offsets[1], object.subj);
writer.writeStringList(offsets[2], object.text);
writer.writeString(offsets[3], object.time);
writer.writeBool(offsets[1], object.read);
writer.writeString(offsets[2], object.subj);
writer.writeStringList(offsets[3], object.text);
writer.writeString(offsets[4], object.time);
}
Message _messageDeserialize(
@@ -92,9 +98,10 @@ Message _messageDeserialize(
final object = Message();
object.from = reader.readString(offsets[0]);
object.id = id;
object.subj = reader.readString(offsets[1]);
object.text = reader.readStringList(offsets[2]) ?? [];
object.time = reader.readString(offsets[3]);
object.read = reader.readBoolOrNull(offsets[1]);
object.subj = reader.readString(offsets[2]);
object.text = reader.readStringList(offsets[3]) ?? [];
object.time = reader.readString(offsets[4]);
return object;
}
@@ -108,10 +115,12 @@ P _messageDeserializeProp<P>(
case 0:
return (reader.readString(offset)) as P;
case 1:
return (reader.readString(offset)) as P;
return (reader.readBoolOrNull(offset)) as P;
case 2:
return (reader.readStringList(offset) ?? []) as P;
return (reader.readString(offset)) as P;
case 3:
return (reader.readStringList(offset) ?? []) as P;
case 4:
return (reader.readString(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
@@ -389,6 +398,32 @@ extension MessageQueryFilter
});
}
QueryBuilder<Message, Message, QAfterFilterCondition> readIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'read',
));
});
}
QueryBuilder<Message, Message, QAfterFilterCondition> readIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'read',
));
});
}
QueryBuilder<Message, Message, QAfterFilterCondition> readEqualTo(
bool? value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'read',
value: value,
));
});
}
QueryBuilder<Message, Message, QAfterFilterCondition> subjEqualTo(
String value, {
bool caseSensitive = true,
@@ -884,6 +919,18 @@ extension MessageQuerySortBy on QueryBuilder<Message, Message, QSortBy> {
});
}
QueryBuilder<Message, Message, QAfterSortBy> sortByRead() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'read', Sort.asc);
});
}
QueryBuilder<Message, Message, QAfterSortBy> sortByReadDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'read', Sort.desc);
});
}
QueryBuilder<Message, Message, QAfterSortBy> sortBySubj() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'subj', Sort.asc);
@@ -935,6 +982,18 @@ extension MessageQuerySortThenBy
});
}
QueryBuilder<Message, Message, QAfterSortBy> thenByRead() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'read', Sort.asc);
});
}
QueryBuilder<Message, Message, QAfterSortBy> thenByReadDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'read', Sort.desc);
});
}
QueryBuilder<Message, Message, QAfterSortBy> thenBySubj() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'subj', Sort.asc);
@@ -969,6 +1028,12 @@ extension MessageQueryWhereDistinct
});
}
QueryBuilder<Message, Message, QDistinct> distinctByRead() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'read');
});
}
QueryBuilder<Message, Message, QDistinct> distinctBySubj(
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
@@ -1004,6 +1069,12 @@ extension MessageQueryProperty
});
}
QueryBuilder<Message, bool?, QQueryOperations> readProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'read');
});
}
QueryBuilder<Message, String, QQueryOperations> subjProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'subj');
@@ -1032,7 +1103,8 @@ Message _$MessageFromJson(Map<String, dynamic> json) => Message()
..time = json['time'] as String
..from = json['from'] as String
..subj = json['subj'] as String
..text = (json['text'] as List<dynamic>).map((e) => e as String).toList();
..text = (json['text'] as List<dynamic>).map((e) => e as String).toList()
..read = json['read'] as bool?;
Map<String, dynamic> _$MessageToJson(Message instance) => <String, dynamic>{
'id': instance.id,
@@ -1040,4 +1112,5 @@ Map<String, dynamic> _$MessageToJson(Message instance) => <String, dynamic>{
'from': instance.from,
'subj': instance.subj,
'text': instance.text,
'read': instance.read,
};