@@ -4,6 +4,54 @@ import { db } from '@app/backend-shared';
44
55const getLabelInfoRouter = Router ( ) ;
66
7+ function getInfoLabel ( userId : number ) {
8+ return db
9+ . selectFrom ( 'users' )
10+ . where ( 'users.id' , '=' , Number ( userId ) )
11+ . leftJoin ( 'labels' , 'labels.users_id' , 'users.id' )
12+ . leftJoin ( 'logos' , 'logos.id' , 'labels.logos_id' )
13+ . leftJoin ( 'staff_label' , 'staff_label.labels_id' , 'labels.id' )
14+ . leftJoin ( 'staff' , 'staff.id' , 'staff_label.staff_id' )
15+ . leftJoin ( 'label_artists' , 'label_artists.label_id' , 'labels.id' )
16+ . leftJoin (
17+ 'artists_hired' ,
18+ 'artists_hired.id' ,
19+ 'label_artists.artists_hired_id' ,
20+ )
21+ . leftJoin ( 'artists' , 'artists.id' , 'artists_hired.artists_id' )
22+ . leftJoin (
23+ 'crew_members_hired' ,
24+ 'crew_members_hired.artists_id' ,
25+ 'artists_hired.id' ,
26+ )
27+ . leftJoin (
28+ 'crew_members' ,
29+ 'crew_members.id' ,
30+ 'crew_members_hired.crew_members_id' ,
31+ )
32+ . leftJoin ( 'singles' , 'singles.artists_hired_id' , 'artists_hired.id' )
33+ . leftJoin ( 'singles_marketing' , 'singles_marketing.singles_id' , 'singles.id' )
34+ . leftJoin ( 'marketing' , 'marketing.id' , 'singles_marketing.marketing_id' )
35+ . leftJoin ( 'albums' , 'albums.artists_hired_id' , 'artists_hired.id' )
36+ . leftJoin ( 'albums_marketing' , 'albums_marketing.albums_id' , 'albums.id' )
37+ . select ( [
38+ 'labels.id' ,
39+ 'labels.name' ,
40+ 'logos.logo_img' ,
41+ 'labels.notoriety' ,
42+ 'labels.budget' ,
43+ db . fn . sum ( 'staff.exp_value' ) . as ( 'staff_xp' ) ,
44+ db . fn . sum ( 'artists.exp_value' ) . as ( 'artists_xp' ) ,
45+ db . fn . sum ( 'crew_members.exp_value' ) . as ( 'crew_xp' ) ,
46+ db . fn . sum ( 'albums.exp_value' ) . as ( 'albums_xp' ) ,
47+ db . fn . sum ( 'marketing.exp_value' ) . as ( 'marketing_xp' ) ,
48+ db . fn . sum ( 'singles.exp_value' ) . as ( 'singles_xp' ) ,
49+ ] )
50+ . groupBy ( 'labels.id' )
51+ . execute ( ) ;
52+ }
53+ export type InfoLabel = Awaited < ReturnType < typeof getInfoLabel > > [ number ] ;
54+
755getLabelInfoRouter . get ( '/label' , async ( req : Request , res ) => {
856 const userId = req . userId ;
957 if ( userId === undefined ) {
@@ -14,55 +62,7 @@ getLabelInfoRouter.get('/label', async (req: Request, res) => {
1462 }
1563
1664 try {
17- const xpData = await db
18- . selectFrom ( 'users' )
19- . where ( 'users.id' , '=' , Number ( userId ) )
20- . leftJoin ( 'labels' , 'labels.users_id' , 'users.id' )
21- . leftJoin ( 'logos' , 'logos.id' , 'labels.logos_id' )
22- . leftJoin ( 'staff_label' , 'staff_label.labels_id' , 'labels.id' )
23- . leftJoin ( 'staff' , 'staff.id' , 'staff_label.staff_id' )
24- . leftJoin ( 'label_artists' , 'label_artists.label_id' , 'labels.id' )
25- . leftJoin (
26- 'artists_hired' ,
27- 'artists_hired.id' ,
28- 'label_artists.artists_hired_id' ,
29- )
30- . leftJoin ( 'artists' , 'artists.id' , 'artists_hired.artists_id' )
31- . leftJoin (
32- 'crew_members_hired' ,
33- 'crew_members_hired.artists_id' ,
34- 'artists_hired.id' ,
35- )
36- . leftJoin (
37- 'crew_members' ,
38- 'crew_members.id' ,
39- 'crew_members_hired.crew_members_id' ,
40- )
41- . leftJoin ( 'singles' , 'singles.artists_hired_id' , 'artists_hired.id' )
42- . leftJoin (
43- 'singles_marketing' ,
44- 'singles_marketing.singles_id' ,
45- 'singles.id' ,
46- )
47- . leftJoin ( 'marketing' , 'marketing.id' , 'singles_marketing.marketing_id' )
48- . leftJoin ( 'albums' , 'albums.artists_hired_id' , 'artists_hired.id' )
49- . leftJoin ( 'albums_marketing' , 'albums_marketing.albums_id' , 'albums.id' )
50- . select ( [
51- 'labels.id' ,
52- 'labels.name' ,
53- 'logos.logo_img' ,
54- 'labels.notoriety' ,
55- 'labels.budget' ,
56- db . fn . sum ( 'staff.exp_value' ) . as ( 'staff_xp' ) ,
57- db . fn . sum ( 'artists.exp_value' ) . as ( 'artists_xp' ) ,
58- db . fn . sum ( 'crew_members.exp_value' ) . as ( 'crew_xp' ) ,
59- db . fn . sum ( 'albums.exp_value' ) . as ( 'albums_xp' ) ,
60- db . fn . sum ( 'marketing.exp_value' ) . as ( 'marketing_xp' ) ,
61- db . fn . sum ( 'singles.exp_value' ) . as ( 'singles_xp' ) ,
62- ] )
63- . groupBy ( 'labels.id' )
64- . execute ( ) ;
65-
65+ const xpData = await getInfoLabel ( userId ) ;
6666 const labelData = xpData [ 0 ] ;
6767
6868 if ( ! Boolean ( xpData ) ) {
0 commit comments