diff --git a/lib/model/status.dart b/lib/model/status.dart new file mode 100644 index 0000000..6f654e9 --- /dev/null +++ b/lib/model/status.dart @@ -0,0 +1,35 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'status.g.dart'; + +@collection +@JsonSerializable() +class Status { + late Id? id; + + late StatusPos pos; + + Status(); + + factory Status.fromJson(Map json) => _$StatusFromJson(json); + + Map toJson() => _$StatusToJson(this); +} + +@embedded +@JsonSerializable() +class StatusPos { + late String zip; + + late String area; + + @JsonKey(name:'zip_real') + late String zipReal; + + StatusPos(); + + factory StatusPos.fromJson(Map json) => _$StatusPosFromJson(json); + + Map toJson() => _$StatusPosToJson(this); +} diff --git a/lib/model/status.g.dart b/lib/model/status.g.dart new file mode 100644 index 0000000..04c9681 --- /dev/null +++ b/lib/model/status.g.dart @@ -0,0 +1,809 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'status.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetStatusCollection on Isar { + IsarCollection get status => this.collection(); +} + +const StatusSchema = CollectionSchema( + name: r'Status', + id: -8158262482337811485, + properties: { + r'pos': PropertySchema( + id: 0, + name: r'pos', + type: IsarType.object, + target: r'StatusPos', + ) + }, + estimateSize: _statusEstimateSize, + serialize: _statusSerialize, + deserialize: _statusDeserialize, + deserializeProp: _statusDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {r'StatusPos': StatusPosSchema}, + getId: _statusGetId, + getLinks: _statusGetLinks, + attach: _statusAttach, + version: '3.1.0+1', +); + +int _statusEstimateSize( + Status object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + + StatusPosSchema.estimateSize( + object.pos, allOffsets[StatusPos]!, allOffsets); + return bytesCount; +} + +void _statusSerialize( + Status object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeObject( + offsets[0], + allOffsets, + StatusPosSchema.serialize, + object.pos, + ); +} + +Status _statusDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = Status(); + object.id = id; + object.pos = reader.readObjectOrNull( + offsets[0], + StatusPosSchema.deserialize, + allOffsets, + ) ?? + StatusPos(); + return object; +} + +P _statusDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readObjectOrNull( + offset, + StatusPosSchema.deserialize, + allOffsets, + ) ?? + StatusPos()) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _statusGetId(Status object) { + return object.id ?? Isar.autoIncrement; +} + +List> _statusGetLinks(Status object) { + return []; +} + +void _statusAttach(IsarCollection col, Id id, Status object) { + object.id = id; +} + +extension StatusQueryWhereSort on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension StatusQueryWhere on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder idNotEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } +} + +extension StatusQueryFilter on QueryBuilder { + QueryBuilder idIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'id', + )); + }); + } + + QueryBuilder idIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'id', + )); + }); + } + + QueryBuilder idEqualTo(Id? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + Id? lower, + Id? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } +} + +extension StatusQueryObject on QueryBuilder { + QueryBuilder pos( + FilterQuery q) { + return QueryBuilder.apply(this, (query) { + return query.object(q, r'pos'); + }); + } +} + +extension StatusQueryLinks on QueryBuilder {} + +extension StatusQuerySortBy on QueryBuilder {} + +extension StatusQuerySortThenBy on QueryBuilder { + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } +} + +extension StatusQueryWhereDistinct on QueryBuilder {} + +extension StatusQueryProperty on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder posProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'pos'); + }); + } +} + +// ************************************************************************** +// IsarEmbeddedGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const StatusPosSchema = Schema( + name: r'StatusPos', + id: 5472875660639986729, + properties: { + r'area': PropertySchema( + id: 0, + name: r'area', + type: IsarType.string, + ), + r'zip': PropertySchema( + id: 1, + name: r'zip', + type: IsarType.string, + ), + r'zipReal': PropertySchema( + id: 2, + name: r'zipReal', + type: IsarType.string, + ) + }, + estimateSize: _statusPosEstimateSize, + serialize: _statusPosSerialize, + deserialize: _statusPosDeserialize, + deserializeProp: _statusPosDeserializeProp, +); + +int _statusPosEstimateSize( + StatusPos object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + bytesCount += 3 + object.area.length * 3; + bytesCount += 3 + object.zip.length * 3; + bytesCount += 3 + object.zipReal.length * 3; + return bytesCount; +} + +void _statusPosSerialize( + StatusPos object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.area); + writer.writeString(offsets[1], object.zip); + writer.writeString(offsets[2], object.zipReal); +} + +StatusPos _statusPosDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = StatusPos(); + object.area = reader.readString(offsets[0]); + object.zip = reader.readString(offsets[1]); + object.zipReal = reader.readString(offsets[2]); + return object; +} + +P _statusPosDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readString(offset)) as P; + case 1: + return (reader.readString(offset)) as P; + case 2: + return (reader.readString(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension StatusPosQueryFilter + on QueryBuilder { + QueryBuilder areaEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'area', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'area', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'area', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder areaIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'area', + value: '', + )); + }); + } + + QueryBuilder areaIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'area', + value: '', + )); + }); + } + + QueryBuilder zipEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zip', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zip', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zip', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zip', + value: '', + )); + }); + } + + QueryBuilder zipRealEqualTo( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealGreaterThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealLessThan( + String value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealBetween( + String lower, + String upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'zipReal', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealContains( + String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'zipReal', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'zipReal', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder zipRealIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'zipReal', + value: '', + )); + }); + } + + QueryBuilder + zipRealIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'zipReal', + value: '', + )); + }); + } +} + +extension StatusPosQueryObject + on QueryBuilder {} + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Status _$StatusFromJson(Map json) => Status() + ..id = json['id'] as int? + ..pos = StatusPos.fromJson(json['pos'] as Map); + +Map _$StatusToJson(Status instance) => { + 'id': instance.id, + 'pos': instance.pos, + }; + +StatusPos _$StatusPosFromJson(Map json) => StatusPos() + ..zip = json['zip'] as String + ..area = json['area'] as String + ..zipReal = json['zip_real'] as String; + +Map _$StatusPosToJson(StatusPos instance) => { + 'zip': instance.zip, + 'area': instance.area, + 'zip_real': instance.zipReal, + }; diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index af78d80..21712b4 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -14,6 +14,7 @@ import 'package:stadtbote/model/log_entry.dart'; import 'package:stadtbote/model/message.dart'; import 'package:stadtbote/model/location_status.dart'; import 'package:stadtbote/model/rank.dart'; +import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/protocoll_messages/acknowledge_job.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_request.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart';