Skip to content

Commit 8570ea0

Browse files
authored
Merge pull request #143 from mebtte/beta
download music list
2 parents 4404a90 + 00af1c5 commit 8570ea0

File tree

219 files changed

+8065
-507
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

219 files changed

+8065
-507
lines changed

apps/cli/src/commands/start_server/api_app/controllers/admin_get_user_list.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Response } from '#/server/api/admin_get_user_list';
33
import { getAssetPublicPath } from '@/platform/asset';
44
import { AssetType } from '#/constants';
55
import { USER_TABLE_NAME, User, UserProperty } from '@/constants/db_definition';
6-
import excludeProperty from '#/utils/exclude_property';
6+
import excludeProperties from '#/utils/exclude_properties';
77
import { UNUSED_2FA_SECRET_PREFIX } from '@/constants';
88
import { Context } from '../constants';
99

@@ -46,7 +46,7 @@ export default async (ctx: Context) => {
4646
);
4747
return ctx.success<Response>(
4848
userList.map((user) => ({
49-
...excludeProperty(user, [UserProperty.TWO_FA_SECRET]),
49+
...excludeProperties(user, [UserProperty.TWO_FA_SECRET]),
5050
avatar: getAssetPublicPath(user.avatar, AssetType.USER_AVATAR),
5151
twoFAEnabled: Boolean(
5252
user.twoFASecret &&

apps/cli/src/commands/start_server/api_app/controllers/get_exploration.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { AssetType } from '#/constants';
22
import { Response } from '#/server/api/get_exploration';
33
import { getDB } from '@/db';
44
import { getSingerListInMusicIds } from '@/db/singer';
5-
import excludeProperty from '#/utils/exclude_property';
5+
import excludeProperties from '#/utils/exclude_properties';
66
import {
77
Music,
88
MusicProperty,
@@ -116,14 +116,14 @@ export default async (ctx: Context) => {
116116
cover: getAssetPublicPath(m.cover, AssetType.MUSIC_COVER),
117117
singers: musicSingerList
118118
.filter((s) => s.musicId === m.id)
119-
.map((s) => excludeProperty(s, ['musicId'])),
119+
.map((s) => excludeProperties(s, ['musicId'])),
120120
})),
121121
singerList: singerList.map((s) => ({
122122
...s,
123123
avatar: getAssetPublicPath(s.avatar, AssetType.SINGER_AVATAR),
124124
})),
125125
publicMusicbillList: publicMusicbillList.map((mb) => ({
126-
...excludeProperty(mb, [MusicbillProperty.USER_ID]),
126+
...excludeProperties(mb, [MusicbillProperty.USER_ID]),
127127
cover: getAssetPublicPath(mb.cover, AssetType.MUSICBILL_COVER),
128128
user: musicbillCreateUserList.find((u) => mb.userId === u.id)!,
129129
})),

apps/cli/src/commands/start_server/api_app/controllers/get_music.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ALIAS_DIVIDER, AssetType } from '#/constants';
22
import { Response } from '#/server/api/get_music';
33
import { ExceptionCode } from '#/constants/exception';
4-
import excludeProperty from '#/utils/exclude_property';
4+
import excludeProperties from '#/utils/exclude_properties';
55
import {
66
Music,
77
MusicProperty,
@@ -85,46 +85,42 @@ export default async (ctx: Context) => {
8585
)
8686
: undefined,
8787
]);
88-
const musicIdMapSingerList: {
89-
[key: string]: (Pick<
88+
const musicIdMapSingerList: Record<string, (Pick<
9089
Singer,
9190
SingerProperty.ID | SingerProperty.NAME | SingerProperty.AVATAR
9291
> & {
9392
aliases: string[];
94-
})[];
95-
} = {};
93+
})[]> = {};
9694
allSingerList.forEach((s) => {
9795
if (!musicIdMapSingerList[s.musicId]) {
9896
musicIdMapSingerList[s.musicId] = [];
9997
}
10098
musicIdMapSingerList[s.musicId].push({
101-
...excludeProperty(s, ['musicId']),
99+
...excludeProperties(s, ['musicId']),
102100
aliases: s.aliases ? s.aliases.split(ALIAS_DIVIDER) : [],
103101
});
104102
});
105103

106-
const musicIdMapMusic: {
107-
[key: string]: Pick<
104+
const musicIdMapMusic: Record<string, Pick<
108105
Music,
109106
MusicProperty.ID | MusicProperty.NAME | MusicProperty.COVER
110107
> & {
111108
singers: Pick<
112109
Singer,
113110
SingerProperty.ID | SingerProperty.NAME | SingerProperty.AVATAR
114111
>[];
115-
};
116-
} = {};
112+
}> = {};
117113
musicList.forEach((m) => {
118114
musicIdMapMusic[m.id] = {
119115
...m,
120116
singers: (musicIdMapSingerList[m.id] || []).map((s) =>
121-
excludeProperty(s, ['aliases']),
117+
excludeProperties(s, ['aliases']),
122118
),
123119
};
124120
});
125121

126122
return ctx.success<Response>({
127-
...excludeProperty(music, [MusicProperty.CREATE_USER_ID]),
123+
...excludeProperties(music, [MusicProperty.CREATE_USER_ID]),
128124
cover: getAssetPublicPath(music.cover, AssetType.MUSIC_COVER),
129125
asset: getAssetPublicPath(music.asset, AssetType.MUSIC),
130126
aliases: music.aliases ? music.aliases.split(ALIAS_DIVIDER) : [],

apps/cli/src/commands/start_server/api_app/controllers/get_music_list.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ALIAS_DIVIDER, AssetType } from '#/constants';
22
import { ExceptionCode } from '#/constants/exception';
33
import { SEARCH_KEYWORD_MAX_LENGTH } from '#/constants/music';
4-
import excludeProperty from '#/utils/exclude_property';
4+
import excludeProperties from '#/utils/exclude_properties';
55
import {
66
Music,
77
MusicProperty,
@@ -150,17 +150,18 @@ export default async (ctx: Context) => {
150150
musicList.map((m) => m.id),
151151
[SingerProperty.ID, SingerProperty.NAME, SingerProperty.ALIASES],
152152
);
153-
const musicIdMapSingerList: {
154-
[key: string]: (Pick<Singer, SingerProperty.ID | SingerProperty.NAME> & {
153+
const musicIdMapSingerList: Record<
154+
string,
155+
(Pick<Singer, SingerProperty.ID | SingerProperty.NAME> & {
155156
aliases: string[];
156-
})[];
157-
} = {};
157+
})[]
158+
> = {};
158159
singerList.forEach((s) => {
159160
if (!musicIdMapSingerList[s.musicId]) {
160161
musicIdMapSingerList[s.musicId] = [];
161162
}
162163
musicIdMapSingerList[s.musicId].push({
163-
...excludeProperty(s, ['musicId']),
164+
...excludeProperties(s, ['musicId']),
164165
aliases: s.aliases ? s.aliases.split(ALIAS_DIVIDER) : [],
165166
});
166167
});

apps/cli/src/commands/start_server/api_app/controllers/get_music_play_record_list.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ALIAS_DIVIDER } from '#/constants';
22
import { ExceptionCode } from '#/constants/exception';
33
import { SEARCH_KEYWORD_MAX_LENGTH } from '#/constants/music';
4-
import excludeProperty from '#/utils/exclude_property';
4+
import excludeProperties from '#/utils/exclude_properties';
55
import {
66
MUSIC_PLAY_RECORD_TABLE_NAME,
77
MUSIC_SINGER_RELATION_TABLE_NAME,
@@ -166,14 +166,12 @@ export default async (ctx: Context) => {
166166
musicPlayRecordList.map((m) => m.id),
167167
[SingerProperty.ID, SingerProperty.NAME],
168168
);
169-
const musicIdMapSingerList: {
170-
[key: string]: Pick<Singer, SingerProperty.ID | SingerProperty.NAME>[];
171-
} = {};
169+
const musicIdMapSingerList: Record<string, Pick<Singer, SingerProperty.ID | SingerProperty.NAME>[]> = {};
172170
singerList.forEach((s) => {
173171
if (!musicIdMapSingerList[s.musicId]) {
174172
musicIdMapSingerList[s.musicId] = [];
175173
}
176-
musicIdMapSingerList[s.musicId].push(excludeProperty(s, ['musicId']));
174+
musicIdMapSingerList[s.musicId].push(excludeProperties(s, ['musicId']));
177175
});
178176

179177
return ctx.success({

apps/cli/src/commands/start_server/api_app/controllers/get_musicbill.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Response } from '#/server/api/get_musicbill';
22
import { ALIAS_DIVIDER, AssetType } from '#/constants';
33
import { ExceptionCode } from '#/constants/exception';
44
import { getSingerListInMusicIds } from '@/db/singer';
5-
import excludeProperty from '#/utils/exclude_property';
5+
import excludeProperties from '#/utils/exclude_properties';
66
import { getAssetPublicPath } from '@/platform/asset';
77
import { getDB } from '@/db';
88
import {
@@ -130,22 +130,31 @@ export default async (ctx: Context) => {
130130
[id],
131131
);
132132

133-
const musicIdMapSingers: Record<string, {
133+
const musicIdMapSingers: Record<
134+
string,
135+
{
134136
id: string;
135137
name: string;
136138
aliases: string[];
137-
}[]> = {};
139+
avatar: string;
140+
}[]
141+
> = {};
138142
if (musicList.length) {
139143
const allSingerList = await getSingerListInMusicIds(
140144
Array.from(new Set(musicList.map((m) => m.id))),
141-
[SingerProperty.ID, SingerProperty.NAME, SingerProperty.ALIASES],
145+
[
146+
SingerProperty.ID,
147+
SingerProperty.NAME,
148+
SingerProperty.ALIASES,
149+
SingerProperty.AVATAR,
150+
],
142151
);
143152
for (const singer of allSingerList) {
144153
if (!musicIdMapSingers[singer.musicId]) {
145154
musicIdMapSingers[singer.musicId] = [];
146155
}
147156
musicIdMapSingers[singer.musicId].push({
148-
...excludeProperty(singer, ['musicId']),
157+
...excludeProperties(singer, ['musicId']),
149158
aliases: singer.aliases ? singer.aliases.split(ALIAS_DIVIDER) : [],
150159
});
151160
}
@@ -171,7 +180,10 @@ export default async (ctx: Context) => {
171180
musicList: musicList.map((m) => ({
172181
...m,
173182
aliases: m.aliases ? m.aliases.split(ALIAS_DIVIDER) : [],
174-
singers: musicIdMapSingers[m.id] || [],
183+
singers: (musicIdMapSingers[m.id] || []).map((s) => ({
184+
...s,
185+
avatar: getAssetPublicPath(s.avatar, AssetType.SINGER_AVATAR),
186+
})),
175187
cover: getAssetPublicPath(m.cover, AssetType.MUSIC_COVER),
176188
asset: getAssetPublicPath(m.asset, AssetType.MUSIC),
177189
})),

apps/cli/src/commands/start_server/api_app/controllers/get_musicbill_list.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
UserProperty,
1414
} from '@/constants/db_definition';
1515
import { getDB } from '@/db';
16-
import excludeProperty from '#/utils/exclude_property';
16+
import excludeProperties from '#/utils/exclude_properties';
1717
import { Context } from '../constants';
1818

1919
export default async (ctx: Context) => {
@@ -101,7 +101,7 @@ export default async (ctx: Context) => {
101101
sharedUserList: sharedUserList
102102
.filter((u) => u.musicbillId === mb.id)
103103
.map((u) => ({
104-
...excludeProperty(u, [SharedMusicbillProperty.MUSICBILL_ID]),
104+
...excludeProperties(u, [SharedMusicbillProperty.MUSICBILL_ID]),
105105
avatar: getAssetPublicPath(u.avatar, AssetType.USER_AVATAR),
106106
accepted: !!u.accepted,
107107
})),

apps/cli/src/commands/start_server/api_app/controllers/get_public_musicbill.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Response } from '#/server/api/get_public_musicbill';
22
import { ALIAS_DIVIDER, AssetType } from '#/constants';
33
import { ExceptionCode } from '#/constants/exception';
4-
import excludeProperty from '#/utils/exclude_property';
4+
import excludeProperties from '#/utils/exclude_properties';
55
import {
66
Music,
77
MusicProperty,
@@ -78,13 +78,11 @@ export default async (ctx: Context) => {
7878
}),
7979
]);
8080

81-
const musicIdMapSingers: {
82-
[key: string]: {
81+
const musicIdMapSingers: Record<string, {
8382
id: string;
8483
name: string;
8584
aliases: string[];
86-
}[];
87-
} = {};
85+
}[]> = {};
8886
if (musicList.length) {
8987
const allSingerList = await getSingerListInMusicIds(
9088
Array.from(new Set(musicList.map((m) => m.id))),
@@ -95,14 +93,14 @@ export default async (ctx: Context) => {
9593
musicIdMapSingers[singer.musicId] = [];
9694
}
9795
musicIdMapSingers[singer.musicId].push({
98-
...excludeProperty(singer, ['musicId']),
96+
...excludeProperties(singer, ['musicId']),
9997
aliases: singer.aliases ? singer.aliases.split(ALIAS_DIVIDER) : [],
10098
});
10199
}
102100
}
103101

104102
return ctx.success<Response>({
105-
...excludeProperty(musicbill, [
103+
...excludeProperties(musicbill, [
106104
MusicbillProperty.PUBLIC,
107105
MusicbillProperty.USER_ID,
108106
]),

apps/cli/src/commands/start_server/api_app/controllers/get_public_musicbill_collection_list.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ExceptionCode } from '#/constants/exception';
22
import { Response } from '#/server/api/get_public_musicbill_collection_list';
33
import { SEARCH_KEYWORD_MAX_LENGTH } from '#/constants/musicbill';
4-
import excludeProperty from '#/utils/exclude_property';
4+
import excludeProperties from '#/utils/exclude_properties';
55
import {
66
PUBLIC_MUSICBILL_COLLECTION_TABLE_NAME,
77
MUSICBILL_TABLE_NAME,
@@ -139,7 +139,7 @@ export default async (ctx: Context) => {
139139
return ctx.success<Response>({
140140
total,
141141
collectionList: collectionList.map((mb) => ({
142-
...excludeProperty(mb, [MusicbillProperty.USER_ID]),
142+
...excludeProperties(mb, [MusicbillProperty.USER_ID]),
143143
user: userList.find((u) => u.id === mb.userId)!,
144144
cover: getAssetPublicPath(mb.cover, AssetType.MUSICBILL_COVER),
145145
})),

apps/cli/src/commands/start_server/api_app/controllers/get_singer.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ALIAS_DIVIDER, AssetType } from '#/constants';
22
import { ExceptionCode } from '#/constants/exception';
33
import { Response } from '#/server/api/get_singer';
4-
import excludeProperty from '#/utils/exclude_property';
4+
import excludeProperties from '#/utils/exclude_properties';
55
import {
66
MUSIC_SINGER_RELATION_TABLE_NAME,
77
MUSIC_TABLE_NAME,
@@ -84,29 +84,38 @@ export default async (ctx: Context) => {
8484
),
8585
]);
8686

87-
const musicIdMapSingers: {
88-
[key: string]: (Pick<Singer, SingerProperty.ID | SingerProperty.NAME> & {
87+
const musicIdMapSingers: Record<
88+
string,
89+
(Pick<
90+
Singer,
91+
SingerProperty.ID | SingerProperty.NAME | SingerProperty.AVATAR
92+
> & {
8993
aliases: string[];
90-
})[];
91-
} = {};
94+
})[]
95+
> = {};
9296
if (musicList.length) {
9397
const allSingerList = await getSingerListInMusicIds(
9498
Array.from(new Set(musicList.map((m) => m.id))),
95-
[SingerProperty.ID, SingerProperty.NAME, SingerProperty.ALIASES],
99+
[
100+
SingerProperty.ID,
101+
SingerProperty.NAME,
102+
SingerProperty.ALIASES,
103+
SingerProperty.AVATAR,
104+
],
96105
);
97106
allSingerList.forEach((s) => {
98107
if (!musicIdMapSingers[s.musicId]) {
99108
musicIdMapSingers[s.musicId] = [];
100109
}
101110
musicIdMapSingers[s.musicId].push({
102-
...excludeProperty(s, ['musicId']),
111+
...excludeProperties(s, ['musicId']),
103112
aliases: s.aliases ? s.aliases.split(ALIAS_DIVIDER) : [],
104113
});
105114
});
106115
}
107116

108117
return ctx.success<Response>({
109-
...excludeProperty(singer, [SingerProperty.CREATE_USER_ID]),
118+
...excludeProperties(singer, [SingerProperty.CREATE_USER_ID]),
110119
avatar: getAssetPublicPath(singer.avatar, AssetType.SINGER_AVATAR),
111120
aliases: singer.aliases ? singer.aliases.split(ALIAS_DIVIDER) : [],
112121
createUser: createUser!,
@@ -115,7 +124,10 @@ export default async (ctx: Context) => {
115124
cover: getAssetPublicPath(m.cover, AssetType.MUSIC_COVER),
116125
asset: getAssetPublicPath(m.asset, AssetType.MUSIC),
117126
aliases: m.aliases ? m.aliases.split(ALIAS_DIVIDER) : [],
118-
singers: musicIdMapSingers[m.id] || [],
127+
singers: (musicIdMapSingers[m.id] || []).map((s) => ({
128+
...s,
129+
avatar: getAssetPublicPath(s.avatar, AssetType.SINGER_AVATAR),
130+
})),
119131
})),
120132

121133
editable: !!editable,

0 commit comments

Comments
 (0)