@@ -14,7 +14,7 @@ import 'participant.dart';
1414
1515const String tableProjects = 'projects' ;
1616
17- class ProjectFields {
17+ class LocalProjectFields {
1818 static const values = [
1919 localId,
2020 remoteId,
@@ -46,7 +46,7 @@ class LocalProject extends LocalGeneric {
4646 static Future <Set <Project >> getAllProjects () async {
4747 final res = await AppData .db.query (
4848 tableProjects,
49- columns: ProjectFields .values,
49+ columns: LocalProjectFields .values,
5050 );
5151 return res.map ((e) => fromJson (e)).toSet ();
5252 }
@@ -76,7 +76,7 @@ class LocalProject extends LocalGeneric {
7676 final rawItems = await AppData .db.query (
7777 tableItems,
7878 where:
79- '${LocalItemFields .project } = ? AND (${LocalItemFields .deleted } == 0 OR ${LocalItemFields .lastUpdate } > ?)' ,
79+ '${LocalItemFields .projectId } = ? AND (${LocalItemFields .deleted } == 0 OR ${LocalItemFields .lastUpdate } > ?)' ,
8080 whereArgs: [project.localId, project.lastSync.millisecondsSinceEpoch],
8181 orderBy: '${LocalItemFields .date } DESC' ,
8282 );
@@ -127,33 +127,53 @@ class LocalProject extends LocalGeneric {
127127
128128 Map <String , Object ?> toJson () {
129129 return {
130- ProjectFields .localId: project.localId,
131- ProjectFields .remoteId: project.remoteId,
132- ProjectFields .name: project.name,
133- ProjectFields .code: project.code ?? getRandom (5 ),
134- ProjectFields .currentParticipant: project.currentParticipant? .localId,
135- ProjectFields .instance: project.provider.instance.localId,
136- ProjectFields .lastSync: project.lastSync.millisecondsSinceEpoch,
137- ProjectFields .lastUpdate: project.lastUpdate.millisecondsSinceEpoch,
138- ProjectFields .deleted: project.deleted ? 1 : 0 ,
130+ LocalProjectFields .localId: project.localId,
131+ LocalProjectFields .remoteId: project.remoteId,
132+ LocalProjectFields .name: project.name,
133+ LocalProjectFields .code: project.code ?? getRandom (5 ),
134+ LocalProjectFields .currentParticipant:
135+ project.currentParticipant? .localId,
136+ LocalProjectFields .instance: project.provider.instance.localId,
137+ LocalProjectFields .lastSync: project.lastSync.millisecondsSinceEpoch,
138+ LocalProjectFields .lastUpdate: project.lastUpdate.millisecondsSinceEpoch,
139+ LocalProjectFields .deleted: project.deleted ? 1 : 0 ,
139140 };
140141 }
141142
142143 static Project fromJson (Map <String , Object ?> json) {
143144 return Project (
144- localId: json[ProjectFields .localId] as int ? ,
145- remoteId: json[ProjectFields .remoteId] as String ? ,
146- name: json[ProjectFields .name] as String ,
147- code: json[ProjectFields .code] as String ? ,
148- currentParticipantId: json[ProjectFields .currentParticipant] as int ? ,
149- instance: Instance .fromId (json[ProjectFields .instance] as int )! ,
145+ localId: json[LocalProjectFields .localId] as int ? ,
146+ remoteId: json[LocalProjectFields .remoteId] as String ? ,
147+ name: json[LocalProjectFields .name] as String ,
148+ code: json[LocalProjectFields .code] as String ? ,
149+ currentParticipantId: json[LocalProjectFields .currentParticipant] as int ? ,
150+ instance: Instance .fromId (json[LocalProjectFields .instance] as int ) ??
151+ Instance .fromName ('local' )! ,
150152 lastSync: DateTime .fromMillisecondsSinceEpoch (
151- json[ProjectFields .lastSync] as int ),
153+ json[LocalProjectFields .lastSync] as int ),
152154 lastUpdate: DateTime .fromMillisecondsSinceEpoch (
153- json[ProjectFields .lastUpdate]
155+ json[LocalProjectFields .lastUpdate]
154156 as int //? ?? DateTime.now().millisecondsSinceEpoch
155157 ),
156- deleted: (json[ProjectFields .deleted] as int ) == 1 ,
158+ deleted: (json[LocalProjectFields .deleted] as int ) == 1 ,
157159 );
158160 }
161+
162+ Future <bool > delete () async {
163+ int a = await AppData .db.delete (tableProjects,
164+ where: '${LocalProjectFields .localId } = ?' ,
165+ whereArgs: [project.localId]);
166+ a += await AppData .db.delete (tableParticipants,
167+ where: '${LocalParticipantFields .projectId } = ?' ,
168+ whereArgs: [project.localId]);
169+ a += await AppData .db.delete (tableItems,
170+ where: '${LocalItemFields .projectId } = ?' ,
171+ whereArgs: [project.localId]);
172+ // await AppData.db.query(tableItemParts, where: '${LocalItemPartFields.itemId} = ?', whereArgs: [project.localId]);
173+ a += await AppData .db.delete (tableGroup,
174+ where: '${LocalGroupFields .projectId } = ?' ,
175+ whereArgs: [project.localId]);
176+ // await AppData.db.query(tableGroupMembership, where: '${LocalGroupMembershipFields.groupId} = ?', whereArgs: [project.localId]);
177+ return a > 0 ;
178+ }
159179}
0 commit comments