Skip to content

Commit 92f5ea4

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/dev-be' into dev-be
2 parents ffc2156 + 835058b commit 92f5ea4

File tree

8 files changed

+48
-16
lines changed

8 files changed

+48
-16
lines changed

backend/mainServer/src/dto/memoryDbDto.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,10 @@ export class MemoryDbDto {
147147
readCount: number = 0;
148148

149149
@ApiProperty({
150-
description: '라이브 우선 순위',
150+
description: '라이브 당시 시청횟수',
151151
example: 0,
152152
})
153-
livePr: number = 0;
153+
livePr: number = Math.floor(Math.random() * 1000) + 100;
154154

155155
constructor(data?: Partial<MemoryDbDto>) {
156156
if (data) {

backend/mainServer/src/memory-db/memory-db.service.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,8 @@ export class MemoryDBService {
6767
return getRandomElementsFromArray(liveSession, count);
6868
}
6969

70-
getBroadcastInfo<T>(size: number, dtoTransformer: (info: MemoryDbDto) => T, checker: (item: MemoryDbDto) => boolean, appender: number = 0) {
71-
const findSession = this.db.filter(item => checker(item)).sort((a: MemoryDbDto, b: MemoryDbDto) => {
72-
const aDate = a.endDate ? a.endDate.getTime() : 0;
73-
const bDate = b.endDate ? b.endDate.getTime() : 0;
74-
return aDate - bDate;
75-
});
70+
getBroadcastInfo<T>(size: number, dtoTransformer: (info: MemoryDbDto) => T, checker: (item: MemoryDbDto) => boolean, compare: (a: MemoryDbDto, b: MemoryDbDto) => number, appender: number = 0) {
71+
const findSession = this.db.filter(item => checker(item)).sort((a: MemoryDbDto, b: MemoryDbDto) => compare(a, b));
7672
if (findSession.length < size) {
7773
const findSessionRev = findSession.reverse().map((info) => dtoTransformer(info));
7874
return [[...findSessionRev], []];
@@ -103,6 +99,14 @@ export class MemoryDBService {
10399
return true;
104100
}
105101

102+
updateById(id: number, updatedItem: Partial<MemoryDbDto>): boolean {
103+
const index = this.db.findIndex(item => Number(item.id) === Number(id));
104+
if (index === -1) return false;
105+
console.log(this.db[index]);
106+
this.db[index] = new MemoryDbDto({ ...this.db[index], ...updatedItem });
107+
return true;
108+
}
109+
106110
updateBySessionKey(sessionKey: string, updatedItem: Partial<MemoryDbDto>): boolean {
107111
const index = this.db.findIndex(item => item.sessionKey === sessionKey);
108112
if (index === -1) return false;

backend/mainServer/src/mock-data/mock-data.controller.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ export class MockDataController {
4545
this.memoryDbService.create(newData);
4646
}
4747

48+
@Post('/update')
49+
@ApiOperation({ summary: 'Delete Session Info', description: '방송 정보를 삭제합니다. (start만 적으면 단일, start, end 범위를 적으면 범위 삭제)' })
50+
async updateMemodyData(@Query('id') id: number, @Body() newData: MemoryDbDto) {
51+
console.log(id);
52+
console.log(newData);
53+
this.memoryDbService.updateById(id, newData);
54+
}
55+
4856
@Get('/chzzk/switch')
4957
@ApiOperation({summary: 'Change Curation Data', description: '메인 랜덤 영상을 치지직 영상으로 대체합니다. (true: mode On, false: mode off 전환 시 기존 치지직 데이터 초기화)'})
5058
async changeCurationData(@Res() res: Response) {

backend/mainServer/src/mock-data/mock-data.service.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export class MockDataService implements OnModuleInit {
1313
liveTitle: 'Tech Conference 2024',
1414
category: 'Technology',
1515
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test1_thumbnail.png',
16+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test1-live-image.png',
1617
tags: ['Conference', 'Tech', '2024'],
1718
startDate: new Date('2024-11-21T09:00:00'),
1819
endDate: new Date('2024-11-21T11:00:00'),
@@ -30,6 +31,7 @@ export class MockDataService implements OnModuleInit {
3031
liveTitle: 'DAN24',
3132
category: 'Art',
3233
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test2_thumbnail.png',
34+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test2-live-image.png',
3335
tags: ['Dan', 'Showcase', 'Art'],
3436
startDate: new Date('2024-11-21T12:00:00'),
3537
endDate: new Date('2024-11-21T14:00:00'),
@@ -47,6 +49,7 @@ export class MockDataService implements OnModuleInit {
4749
liveTitle: 'Gaming Tournament Finals',
4850
category: 'Gaming',
4951
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test3_thumbnail.png',
52+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test3-live-image.png',
5053
tags: ['Gaming', 'Esports', 'Finals'],
5154
startDate: new Date('2024-11-21T15:00:00'),
5255
endDate: new Date('2024-11-21T18:00:00'),
@@ -64,6 +67,7 @@ export class MockDataService implements OnModuleInit {
6467
liveTitle: 'Music Live Show',
6568
category: 'Music',
6669
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test4_thumbnail.png',
70+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test4-live-image.png',
6771
tags: ['Music', 'Live', 'Concert'],
6872
startDate: new Date('2024-11-21T19:00:00'),
6973
endDate: new Date('2024-11-21T21:00:00'),
@@ -81,6 +85,7 @@ export class MockDataService implements OnModuleInit {
8185
liveTitle: 'Cooking with Pros',
8286
category: 'Food',
8387
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test5_thumbnail.png',
88+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test5-live-image.png',
8489
tags: ['Cooking', 'Food', 'Recipes'],
8590
startDate: new Date('2024-11-22T12:00:00'),
8691
endDate: new Date('2024-11-22T14:00:00'),
@@ -98,6 +103,7 @@ export class MockDataService implements OnModuleInit {
98103
liveTitle: 'Tech Conference 2024',
99104
category: 'Technology',
100105
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test6_thumbnail.png',
106+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test6-live-image.png',
101107
tags: ['Tech', 'Conference', 'Innovation'],
102108
startDate: new Date('2024-11-22T15:00:00'),
103109
endDate: new Date('2024-11-22T18:00:00'),
@@ -115,6 +121,7 @@ export class MockDataService implements OnModuleInit {
115121
liveTitle: 'Art Masterclass',
116122
category: 'Art',
117123
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test7_thumbnail.png',
124+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test7-live-image.png',
118125
tags: ['Art', 'Painting', 'Creative'],
119126
startDate: new Date('2024-11-23T10:00:00'),
120127
endDate: new Date('2024-11-23T12:00:00'),
@@ -132,6 +139,7 @@ export class MockDataService implements OnModuleInit {
132139
liveTitle: 'Fitness Live Session',
133140
category: 'Health',
134141
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test8_thumbnail.png',
142+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test8-live-image.png',
135143
tags: ['Fitness', 'Health', 'Workout'],
136144
startDate: new Date('2024-11-23T16:00:00'),
137145
endDate: new Date('2024-11-23T17:00:00'),
@@ -149,6 +157,7 @@ export class MockDataService implements OnModuleInit {
149157
liveTitle: 'Travel Vlog Live',
150158
category: 'Travel',
151159
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test9_thumbnail.png',
160+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test9-live-image.png',
152161
tags: ['Travel', 'Adventure', 'Vlog'],
153162
startDate: new Date('2024-11-24T09:00:00'),
154163
endDate: new Date('2024-11-24T11:00:00'),
@@ -166,6 +175,7 @@ export class MockDataService implements OnModuleInit {
166175
liveTitle: 'Replay Title',
167176
category: 'Replay Category',
168177
defaultThumbnailImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test10_thumbnail.png',
178+
liveImageUrl: 'https://kr.object.ncloudstorage.com/web22/static/test10-live-image.png',
169179
tags: ['replay', '다시보기'],
170180
startDate: new Date(Date.now() - 60 * 60 * 1000), // 1 hour ago
171181
endDate: new Date(Date.now() - 30 * 60 * 1000), // 30 minutes ago

backend/mainServer/src/replay/replay.controller.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ export class ReplayController {
1717
async getLatestReplay(@Res() res: Response) {
1818
try {
1919
const replayChecker = (item: MemoryDbDto) => { return item.replay && !item.state; };
20-
const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo<ReplayVideoDto>(8, memoryDbDtoToReplayVideoDto, replayChecker, 8);
20+
const compare = (a: MemoryDbDto, b: MemoryDbDto) => {
21+
const aTime = a.startDate ? a.startDate.getTime() : 0;
22+
const bTime = b.startDate ? b.startDate.getTime() : 0;
23+
return aTime - bTime;
24+
};
25+
const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo<ReplayVideoDto>(8, memoryDbDtoToReplayVideoDto, replayChecker, compare, 8);
2126
res.status(HttpStatus.OK).json({info: serchedData, appendInfo: appendData});
2227
} catch (error) {
2328
if ((error as { status: number }).status === 400) {

backend/mainServer/src/streams/streams.controller.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ export class StreamsController {
3737
async getLatestSession(@Res() res: Response) {
3838
try {
3939
const streamChecker = (item: MemoryDbDto) => item.state;
40-
const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo<LiveSessionResponseDto>(8, fromLiveSessionDto, streamChecker, 8);
40+
const compare = (a: MemoryDbDto, b: MemoryDbDto) => {
41+
const aTime = a.startDate ? a.startDate.getTime() : 0;
42+
const bTime = b.startDate ? b.startDate.getTime() : 0;
43+
return aTime - bTime;
44+
};
45+
const [serchedData, appendData] = this.memoryDBService.getBroadcastInfo<LiveSessionResponseDto>(8, fromLiveSessionDto, streamChecker, compare, 8);
4146
res.status(HttpStatus.OK).json({info: serchedData, appendInfo: appendData});
4247
} catch (error) {
4348
if ((error as { status: number }).status === 400) {

backend/rtmpServer/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"private": true,
44
"packageManager": "[email protected]",
55
"dependencies": {
6-
"@hoeeeeeh/node-media-server": "3.0.7",
6+
"@hoeeeeeh/node-media-server": "3.0.10",
77
"@types/node": "^22.9.0",
88
"dotenv": "^16.4.5",
99
"path": "0.12.7"

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2689,9 +2689,9 @@ __metadata:
26892689
languageName: node
26902690
linkType: hard
26912691

2692-
"@hoeeeeeh/node-media-server@npm:3.0.7":
2693-
version: 3.0.7
2694-
resolution: "@hoeeeeeh/node-media-server@npm:3.0.7"
2692+
"@hoeeeeeh/node-media-server@npm:3.0.10":
2693+
version: 3.0.10
2694+
resolution: "@hoeeeeeh/node-media-server@npm:3.0.10"
26952695
dependencies:
26962696
"@aws-sdk/client-s3": "npm:^3.688.0"
26972697
"@types/node": "npm:^22.9.0"
@@ -2709,7 +2709,7 @@ __metadata:
27092709
ws: "npm:^8.13.0"
27102710
bin:
27112711
node-media-server: bin/app.js
2712-
checksum: 10c0/54a26fddd0bef9bfc8f15c6a22d7019b379070501b793dd5a8482d434c3a9fc93e6e04428a83e1ec48a468102d7f360dcd5a371f946ea5ae4e4d6f129413bd31
2712+
checksum: 10c0/ac5a520a8465d735dc6dcd7c9152da33f4a21d9db18447939df410c5797666f2b14c84675f53b75f7c22841063c205f52d24092b25a69c062e0537e41a37e4d4
27132713
languageName: node
27142714
linkType: hard
27152715

@@ -11849,7 +11849,7 @@ __metadata:
1184911849
resolution: "rtmpServer@workspace:backend/rtmpServer"
1185011850
dependencies:
1185111851
"@eslint/js": "npm:^9.13.0"
11852-
"@hoeeeeeh/node-media-server": "npm:3.0.7"
11852+
"@hoeeeeeh/node-media-server": "npm:3.0.10"
1185311853
"@types/node": "npm:^22.9.0"
1185411854
"@typescript-eslint/eslint-plugin": "npm:^8.14.0"
1185511855
"@typescript-eslint/parser": "npm:^8.14.0"

0 commit comments

Comments
 (0)