1+
2+
3+ module . exports = async function makeUser ( { dbConnection } ) {
4+
5+
6+ return Object . freeze ( {
7+ findAllUsers,
8+ findUserById,
9+ createUser,
10+ updateUser,
11+ deleteUser
12+ } )
13+
14+
15+ async function findAllUsers ( ) {
16+ const db = await dbConnection ( )
17+ const result = await db . collection ( 'comments' ) . find ( { } )
18+ return ( await result . toArray ( ) ) . map ( ( { _id : id , ...found } ) => ( {
19+ id,
20+ ...found
21+ } ) )
22+ }
23+
24+ async function findUserById ( ) {
25+ const db = await dbConnection ( )
26+ const result = await db . collection ( 'comments' ) . find ( { _id } )
27+ const found = await result . toArray ( )
28+ if ( found . length === 0 ) {
29+ return null
30+ }
31+ const { _id : id , ...info } = found [ 0 ]
32+ return { id, ...info }
33+ }
34+
35+ async function createUser ( { id : _id = Id . makeId ( ) , ...userData } ) {
36+ const db = await dbConnection ( )
37+ const result = await db
38+ . collection ( 'comments' )
39+ . insertOne ( { _id, ...userData } )
40+ const { _id : id , ...insertedInfo } = result . ops [ 0 ]
41+ return { id, ...insertedInfo }
42+ }
43+
44+ async function updateUser ( { id : _id , userData } ) {
45+ const db = await dbConnection ( )
46+ const result = await db
47+ . collection ( 'comments' )
48+ . updateOne ( { _id } , { $set : { ...userData } } )
49+ return result . modifiedCount > 0 ? { id : _id , ...userData } : null
50+ }
51+
52+ async function deleteUser ( { id : _id } ) {
53+ const db = await dbConnection ( )
54+ const result = await db . collection ( 'comments' ) . deleteOne ( { _id } )
55+ return result . deletedCount
56+ }
57+ }
0 commit comments