@@ -6,6 +6,7 @@ interface CreateUserParams {
66 email : string
77 name : string
88 password : string
9+ role ?: string
910}
1011
1112/**
@@ -19,14 +20,17 @@ export const createUser = async (userData: CreateUserParams, options: ModuleOpti
1920 // Hash the password
2021 const hashedPassword = await bcrypt . hash ( userData . password , 10 )
2122
23+ // Set default role if not provided
24+ const role = userData . role || 'user'
25+
2226 // Insert the new user
2327 await db . sql `
24- INSERT INTO {${ usersTable } } (email, name, password, created_at, updated_at)
25- VALUES (${ userData . email } , ${ userData . name } , ${ hashedPassword } , CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
28+ INSERT INTO {${ usersTable } } (email, name, password, role, created_at, updated_at)
29+ VALUES (${ userData . email } , ${ userData . name } , ${ hashedPassword } , ${ role } , CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
2630 `
2731 // Fetch the created user to return it (especially to get the ID and ensure it was created)
2832 // Exclude password in the return type
29- const result = await db . sql `SELECT id, email, name, created_at, updated_at FROM {${ usersTable } } WHERE email = ${ userData . email } ` as { rows : Array < { id : number , email : string , name : string , created_at : Date | string , updated_at : Date | string } > }
33+ const result = await db . sql `SELECT id, email, name, role, created_at, updated_at FROM {${ usersTable } } WHERE email = ${ userData . email } ` as { rows : Array < { id : number , email : string , name : string , role : string , created_at : Date | string , updated_at : Date | string } > }
3034
3135 if ( result . rows . length === 0 ) {
3236 throw new Error ( 'Failed to retrieve created user.' )
@@ -39,6 +43,7 @@ export const createUser = async (userData: CreateUserParams, options: ModuleOpti
3943 id : user . id ,
4044 email : user . email ,
4145 name : user . name ,
46+ role : user . role ,
4247 created_at : user . created_at instanceof Date ? user . created_at . toISOString ( ) : user . created_at ,
4348 updated_at : user . updated_at instanceof Date ? user . updated_at . toISOString ( ) : user . updated_at
4449 }
@@ -51,7 +56,7 @@ export const findUserByEmail = async (email: string, options: ModuleOptions): Pr
5156 const db = await useDb ( options )
5257 const usersTable = options . tables . users
5358
54- const result = await db . sql `SELECT * FROM {${ usersTable } } WHERE email = ${ email } ` as { rows : Array < { id : number , email : string , name : string , password : string , created_at : Date | string , updated_at : Date | string } > }
59+ const result = await db . sql `SELECT * FROM {${ usersTable } } WHERE email = ${ email } ` as { rows : Array < { id : number , email : string , name : string , password : string , role : string , created_at : Date | string , updated_at : Date | string } > }
5560
5661 if ( result . rows . length === 0 ) {
5762 return null
@@ -65,6 +70,7 @@ export const findUserByEmail = async (email: string, options: ModuleOptions): Pr
6570 email : user . email ,
6671 name : user . name ,
6772 password : user . password ,
73+ role : user . role ,
6874 created_at : user . created_at instanceof Date ? user . created_at . toISOString ( ) : user . created_at ,
6975 updated_at : user . updated_at instanceof Date ? user . updated_at . toISOString ( ) : user . updated_at
7076 }
0 commit comments