Erweiterungen
This commit is contained in:
1 parent
47f31b7a5a
commit
c69a5644a1
5 files changed
+128
-18
No files matched your search
@@ -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
@@ -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,
|
||||
};
|
||||
Reference in new issue
Block a user