@@ -93,7 +93,6 @@ singlesRouter.get('/', async (req: Request, res) => {
9393
9494singlesRouter . post ( '/' , async ( req : Request , res ) => {
9595 const { artistHiredId, singleName, genreId } = req . body ;
96- console . log ( req . body ) ;
9796
9897 const userId = req . userId ;
9998 if ( userId === undefined ) {
@@ -122,6 +121,66 @@ singlesRouter.post('/', async (req: Request, res) => {
122121 } )
123122 . execute ( ) ;
124123
124+ const milestones = await db
125+ . selectFrom ( 'milestones' )
126+ . leftJoin ( 'artists_hired' , 'artists_hired.milestones_id' , 'milestones.id' )
127+ . select ( 'milestones.value' )
128+ . where ( 'artists_hired.id' , '=' , artistHiredId )
129+ . execute ( ) ;
130+
131+ const gain = milestones . map ( ( label ) => {
132+ const newGain = Number ( label . value ) / 100 ;
133+ return newGain ;
134+ } ) ;
135+
136+ const notoriety = await db
137+ . selectFrom ( 'artists_hired' )
138+ . select ( 'artists_hired.notoriety' )
139+ . where ( 'artists_hired.id' , '=' , artistHiredId )
140+ . executeTakeFirst ( ) ;
141+
142+ if ( ! notoriety ) {
143+ res . status ( 400 ) . json ( { error : 'No milestone found' } ) ;
144+ return ;
145+ }
146+
147+ if ( notoriety . notoriety >= 5 ) {
148+ res . json ( { message : 'max 5' } ) ;
149+ return ;
150+ }
151+
152+ await db
153+ . updateTable ( 'artists_hired' )
154+ . set ( ( eb ) => ( {
155+ notoriety : eb ( 'notoriety' , '+' , Number ( gain ) ) ,
156+ } ) )
157+ . where ( 'artists_hired.id' , '=' , artistHiredId )
158+ . execute ( ) ;
159+
160+ const newMilestone = await db
161+ . selectFrom ( 'milestones' )
162+ . select ( 'id' )
163+ . where ( 'value' , '<=' , Number ( notoriety . notoriety ) * 10 )
164+ . orderBy ( 'id' , 'desc' )
165+ . limit ( 1 )
166+ . executeTakeFirst ( ) ;
167+
168+ if ( ! newMilestone ) {
169+ res . status ( 400 ) . json ( { error : 'No milestone found' } ) ;
170+ return ;
171+ }
172+
173+ if ( newMilestone . id >= 5 ) {
174+ res . json ( { message : 'max 5' } ) ;
175+ return ;
176+ }
177+
178+ await db
179+ . updateTable ( 'artists_hired' )
180+ . set ( { milestones_id : newMilestone . id } )
181+ . where ( 'id' , '=' , artistHiredId )
182+ . execute ( ) ;
183+
125184 res . status ( 201 ) . json ( { success : true } ) ;
126185 return ;
127186 } catch ( err ) {
0 commit comments