1- using System . IO ;
2- using Microsoft . Extensions . Logging ;
3- using Microsoft . Maui . Storage ;
4- using Newtonsoft . Json ;
1+ using Microsoft . Extensions . Logging ;
52using PowerSync . Common . Client ;
63using PowerSync . Common . MDSQLite ;
74using PowerSync . Maui . SQLite ;
8- using SQLite ;
95using TodoSQLite . Models ;
106
117namespace TodoSQLite . Data ;
@@ -15,20 +11,20 @@ public class PowerSyncData
1511 private PowerSyncDatabase _db ;
1612 private ILogger _logger ;
1713
18- private record ListResult ( string id , string name , string owner_id , string created_at ) ;
19- private record TodoResult ( string id , string list_id , string description , string created_at , string completed_at , string created_by , string completed_by , int completed ) ;
14+ public string UserId { get ; set ; } = "" ;
2015
16+
2117 async Task Init ( )
2218 {
2319 if ( _db != null ) return ;
24-
20+
2521 ILoggerFactory loggerFactory = LoggerFactory . Create ( builder =>
2622 {
2723 builder . AddConsole ( ) ;
2824 builder . SetMinimumLevel ( LogLevel . Trace ) ;
2925 } ) ;
3026 _logger = loggerFactory . CreateLogger ( "PowerSyncLogger" ) ;
31-
27+
3228 var dbPath = Path . Combine ( FileSystem . AppDataDirectory , "mydb.db" ) ;
3329 var factory = new MAUISQLiteDBOpenFactory ( new MDSQLiteOpenFactoryOptions ( )
3430 {
@@ -42,130 +38,54 @@ async Task Init()
4238 } ) ;
4339 await _db . Init ( ) ;
4440
45- // var nodeConnector = new NodeConnector();
46- // await _db.Connect(nodeConnector);
41+ var nodeConnector = new NodeConnector ( ) ;
42+ UserId = nodeConnector . UserId ;
43+ await _db . Connect ( nodeConnector ) ;
4744 }
4845
4946 // List operations
5047 public async Task < List < TodoList > > GetListsAsync ( )
5148 {
5249 await Init ( ) ;
53- var results = await _db . GetAll < ListResult > ( "SELECT * FROM lists ORDER BY created_at DESC" ) ;
54- return results . Select ( r => new TodoList
55- {
56- ID = r . id ,
57- Name = r . name ,
58- OwnerId = r . owner_id ,
59- CreatedAt = r . created_at
60- } ) . ToList ( ) ;
61- }
62-
63- public async Task < TodoList > GetListAsync ( string id )
64- {
65- await Init ( ) ;
66- var result = await _db . GetAll < ListResult > ( "SELECT * FROM lists WHERE id = ?" , [ id . ToString ( ) ] ) ;
67- var list = result . FirstOrDefault ( ) ;
68- if ( list == null ) return null ;
69-
70- return new TodoList
71- {
72- ID = list . id ,
73- Name = list . name ,
74- OwnerId = list . owner_id ,
75- CreatedAt = list . created_at
76- } ;
50+ var results = await _db . GetAll < TodoList > ( "SELECT * FROM lists ORDER BY created_at DESC" ) ;
51+ return results . ToList ( ) ;
7752 }
7853
79- public async Task < int > SaveListAsync ( TodoList list )
54+ public async Task SaveListAsync ( TodoList list )
8055 {
8156 await Init ( ) ;
8257 if ( list . ID != "" )
8358 {
8459 await _db . Execute (
8560 "UPDATE lists SET name = ?, owner_id = ? WHERE id = ?" ,
86- [ list . Name , list . OwnerId , list . ID . ToString ( ) ] ) ;
87- return 1 ;
61+ [ list . Name , UserId , list . ID ] ) ;
8862 }
8963 else
9064 {
9165 await _db . Execute (
9266 "INSERT INTO lists (id, name, owner_id, created_at) VALUES (uuid(), ?, ?, ?)" ,
93- [ list . Name , list . OwnerId , DateTime . UtcNow . ToString ( "o" ) ] ) ;
94- return 1 ;
67+ [ list . Name , UserId , DateTime . UtcNow . ToString ( "o" ) ] ) ;
9568 }
9669 }
9770
98- public async Task < int > DeleteListAsync ( TodoList list )
71+ public async Task DeleteListAsync ( TodoList list )
9972 {
10073 await Init ( ) ;
101- string listId = list . ID . ToString ( ) ;
74+ var listId = list . ID ;
10275 // First delete all todo items in this list
10376 await _db . Execute ( "DELETE FROM todos WHERE list_id = ?" , [ listId ] ) ;
10477 await _db . Execute ( "DELETE FROM lists WHERE id = ?" , [ listId ] ) ;
105- return 1 ;
10678 }
107-
108- // Todo item operations
10979 public async Task < List < TodoItem > > GetItemsAsync ( string listId )
11080 {
11181 await Init ( ) ;
112- var results = await _db . GetAll < TodoResult > (
82+ var results = await _db . GetAll < TodoItem > (
11383 "SELECT * FROM todos WHERE list_id = ? ORDER BY created_at DESC" , [ listId ] ) ;
11484
115- return results . Select ( r => new TodoItem
116- {
117- ID = r . id ,
118- ListId = r . list_id ,
119- Description = r . description ,
120- CreatedAt = r . created_at ,
121- CompletedAt = r . completed_at ,
122- CreatedBy = r . created_by ,
123- CompletedBy = r . completed_by ,
124- Completed = r . completed == 1
125- } ) . ToList ( ) ;
126- }
127-
128- public async Task < List < TodoItem > > GetItemsNotDoneAsync ( string listId )
129- {
130- await Init ( ) ;
131- var results = await _db . GetAll < TodoResult > (
132- "SELECT * FROM todos WHERE list_id = ? AND completed = 0 ORDER BY created_at DESC" ,
133- [ listId ] ) ;
134-
135- return results . Select ( r => new TodoItem
136- {
137- ID = r . id ,
138- ListId = r . list_id ,
139- Description = r . description ,
140- CreatedAt = r . created_at ,
141- CompletedAt = r . completed_at ,
142- CreatedBy = r . created_by ,
143- CompletedBy = r . completed_by ,
144- Completed = r . completed == 1
145- } ) . ToList ( ) ;
146- }
147-
148- public async Task < TodoItem > GetItemAsync ( string id )
149- {
150- await Init ( ) ;
151- var results = await _db . GetAll < TodoResult > ( "SELECT * FROM todos WHERE id = ?" , [ id . ToString ( ) ] ) ;
152- var todo = results . FirstOrDefault ( ) ;
153- if ( todo == null ) return null ;
154-
155- return new TodoItem
156- {
157- ID = todo . id ,
158- ListId = todo . list_id ,
159- Description = todo . description ,
160- CreatedAt = todo . created_at ,
161- CompletedAt = todo . completed_at ,
162- CreatedBy = todo . created_by ,
163- CompletedBy = todo . completed_by ,
164- Completed = todo . completed == 1
165- } ;
85+ return results . ToList ( ) ;
16686 }
16787
168- public async Task < int > SaveItemAsync ( TodoItem item )
88+ public async Task SaveItemAsync ( TodoItem item )
16989 {
17090 await Init ( ) ;
17191 if ( item . ID != "" )
@@ -174,32 +94,33 @@ await _db.Execute(
17494 @"UPDATE todos
17595 SET description = ?, completed = ?, completed_at = ?, completed_by = ?
17696 WHERE id = ?" ,
177- [ item . Description ,
178- item . Completed ? 1 : 0 ,
179- item . CompletedAt ,
180- item . CompletedBy ,
181- item . ID . ToString ( ) ] ) ;
182- return 1 ;
97+ [
98+ item . Description ,
99+ item . Completed ? 1 : 0 ,
100+ item . CompletedAt ,
101+ UserId ,
102+ item . ID
103+ ] ) ;
183104 }
184105 else
185106 {
186107 await _db . Execute (
187108 @"INSERT INTO todos
188109 (id, list_id, description, created_at, completed, created_by)
189110 VALUES (uuid(), ?, ?, ?, ?, ?)" ,
190- [ item . ListId ,
191- item . Description ,
192- item . CreatedAt ,
193- item . Completed ? 1 : 0 ,
194- item . CreatedBy ] ) ;
195- return 1 ;
111+ [
112+ item . ListId ,
113+ item . Description ,
114+ item . CreatedAt ,
115+ item . Completed ? 1 : 0 ,
116+ UserId
117+ ] ) ;
196118 }
197119 }
198120
199- public async Task < int > DeleteItemAsync ( TodoItem item )
121+ public async Task DeleteItemAsync ( TodoItem item )
200122 {
201123 await Init ( ) ;
202- await _db . Execute ( "DELETE FROM todos WHERE id = ?" , [ item . ID . ToString ( ) ] ) ;
203- return 1 ;
124+ await _db . Execute ( "DELETE FROM todos WHERE id = ?" , [ item . ID ] ) ;
204125 }
205126}
0 commit comments