@@ -66,6 +66,7 @@ export async function getAccounts(c: Context) {
6666// }
6767
6868const addAccountSchema = z . object ( {
69+ id : z . coerce . number ( ) . optional ( ) ,
6970 addressOrName : z . string ( ) . optional ( ) ,
7071 name : z . string ( ) . optional ( ) ,
7172 description : z . string ( ) . optional ( ) ,
@@ -79,7 +80,7 @@ export async function addAccount(c: Context) {
7980 return c . json ( { error : safeParse . error } , 400 )
8081 }
8182
82- let { addressOrName, name, description } = safeParse . data
83+ let { id , addressOrName, name, description } = safeParse . data
8384
8485 if ( ! addressOrName && ! name ) {
8586 return c . json (
@@ -88,15 +89,28 @@ export async function addAccount(c: Context) {
8889 )
8990 }
9091
92+ // Handle offchain accounts
9193 if ( ! addressOrName ) {
92- // Treat this as a manual account
93- await db
94- . insertInto ( 'accounts' )
95- . values ( {
96- name : name ! ,
97- description,
98- } )
99- . execute ( )
94+ if ( id ) {
95+ // Update an existing offchain account
96+ await db
97+ . updateTable ( 'accounts' )
98+ . set ( {
99+ name,
100+ description,
101+ } )
102+ . where ( 'id' , '=' , id )
103+ . execute ( )
104+ } else {
105+ // Create a new offchain account
106+ await db
107+ . insertInto ( 'accounts' )
108+ . values ( {
109+ name : name ! ,
110+ description,
111+ } )
112+ . execute ( )
113+ }
100114
101115 return c . json ( { success : true } )
102116 }
@@ -137,21 +151,10 @@ export async function addAccount(c: Context) {
137151 . executeTakeFirst ( )
138152
139153 if ( existingAddress ) {
140- // Treat this as an update
141- await db
142- . updateTable ( 'accounts' )
143- . set ( data )
144- . where ( 'id' , '=' , existingAddress . id )
145- . execute ( )
146-
147- return c . json ( { success : true } )
154+ return c . json ( { error : 'Account already exists' } , 400 )
148155 }
149156
150- await db
151- . insertInto ( 'accounts' )
152- . values ( data )
153- . onConflict ( ( oc ) => oc . column ( 'id' ) . doUpdateSet ( data ) )
154- . execute ( )
157+ await db . insertInto ( 'accounts' ) . values ( data ) . execute ( )
155158
156159 return c . json ( { success : true } )
157160}
0 commit comments