Skip to content

Commit 0fac25a

Browse files
committed
refactor/Websocket 서버 구조 변경
1 parent 3b1f63d commit 0fac25a

19 files changed

+175
-534
lines changed

packages/collaborative/src/app.module.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import { TypeOrmModule } from '@nestjs/typeorm';
66
import { CollaborativeModule } from './collaborative/collaborative.module';
77
import { getMongooseConfig } from './common/config/mongo.config';
88
import { getTypeOrmConfig } from './common/config/typeorm.config';
9-
import { NoteModule } from './note/note.module';
10-
import { SpaceModule } from './space/space.module';
119
import { YjsModule } from './yjs/yjs.module';
1210
import { RedisService } from './redis/redis.service';
1311
import { RedisModule } from './redis/redis.module';
@@ -28,9 +26,7 @@ import { ScheduleModule } from '@nestjs/schedule';
2826
inject: [ConfigService],
2927
useFactory: getTypeOrmConfig,
3028
}),
31-
SpaceModule,
3229
YjsModule,
33-
NoteModule,
3430
CollaborativeModule,
3531
RedisModule,
3632
ResourceMatricsModule,
Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
import { Module } from '@nestjs/common';
2+
import { MongooseModule } from '@nestjs/mongoose';
23

3-
import { NoteModule } from '../note/note.module';
4-
import { SpaceModule } from '../space/space.module';
5-
import { CollaborativeService } from './collaborative.service';
6-
4+
import { CollaborativeSpaceService } from './collaborative.space.service';
5+
import { CollaborativeNoteService } from './collaborative.note.service';
6+
import { NoteDocument, NoteSchema } from './schema/note.schema';
7+
import { SpaceDocument, SpaceSchema } from './schema/space.schema';
78
@Module({
8-
imports: [NoteModule, SpaceModule],
9-
providers: [CollaborativeService],
10-
exports: [CollaborativeService],
9+
imports: [
10+
MongooseModule.forFeature([
11+
{ name: NoteDocument.name, schema: NoteSchema },
12+
{ name: SpaceDocument.name, schema: SpaceSchema },
13+
]),
14+
],
15+
providers: [CollaborativeSpaceService,CollaborativeNoteService],
16+
exports: [CollaborativeSpaceService, CollaborativeNoteService]
1117
})
1218
export class CollaborativeModule {}

packages/collaborative/src/note/note.service.ts renamed to packages/collaborative/src/collaborative/collaborative.note.service.ts

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { InjectModel } from '@nestjs/mongoose';
33
import { Model } from 'mongoose';
44

55
import { ERROR_MESSAGES } from '../common/constants/error.message.constants';
6-
import { NoteDocument } from './note.schema';
6+
import { NoteDocument } from './schema/note.schema';
77

88
@Injectable()
9-
export class NoteService {
10-
private readonly logger = new Logger(NoteService.name);
9+
export class CollaborativeNoteService {
10+
private readonly logger = new Logger(CollaborativeNoteService.name);
1111

1212
constructor(
1313
@InjectModel(NoteDocument.name)
@@ -63,4 +63,58 @@ export class NoteService {
6363
throw new BadRequestException(ERROR_MESSAGES.NOTE.UPDATE_FAILED);
6464
}
6565
}
66+
67+
async updateByNote(id: string, note: string) {
68+
try {
69+
this.logger.log('노트 내용 업데이트 시작', {
70+
method: 'updateByNote',
71+
noteId: id,
72+
length: note.length,
73+
});
74+
75+
const updatedNote = await this.updateContent(id, note);
76+
77+
this.logger.log('노트 내용 업데이트 완료', {
78+
method: 'updateByNote',
79+
noteId: id,
80+
});
81+
82+
return updatedNote;
83+
} catch (error) {
84+
this.logger.error('노트 내용 업데이트 실패', {
85+
method: 'updateByNote',
86+
noteId: id,
87+
error: error.message,
88+
stack: error.stack,
89+
});
90+
throw new BadRequestException(ERROR_MESSAGES.NOTE.UPDATE_FAILED);
91+
}
92+
}
93+
94+
async findByNote(id: string) {
95+
try {
96+
this.logger.log('노트 조회 시작', {
97+
method: 'findByNote',
98+
noteId: id,
99+
});
100+
101+
const note = await this.findById(id);
102+
103+
this.logger.log('노트 조회 완료', {
104+
method: 'findByNote',
105+
noteId: id,
106+
found: !!note,
107+
});
108+
109+
return note;
110+
} catch (error) {
111+
this.logger.error('노트 조회 실패', {
112+
method: 'findByNote',
113+
noteId: id,
114+
error: error.message,
115+
stack: error.stack,
116+
});
117+
throw error;
118+
}
119+
}
66120
}

packages/collaborative/src/collaborative/collaborative.service.ts

Lines changed: 0 additions & 135 deletions
This file was deleted.
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import { BadRequestException, Injectable, Logger } from '@nestjs/common';
2+
import { InjectModel } from '@nestjs/mongoose';
3+
import { Model } from 'mongoose';
4+
5+
import { SpaceDocument } from './schema/space.schema';
6+
import { ERROR_MESSAGES } from 'src/common/constants/error.message.constants';
7+
8+
@Injectable()
9+
export class CollaborativeSpaceService {
10+
private readonly logger = new Logger(CollaborativeSpaceService.name);
11+
12+
constructor(
13+
@InjectModel(SpaceDocument.name)
14+
private readonly spaceModel: Model<SpaceDocument>,
15+
) {}
16+
17+
async updateBySpace(id: string, space: string) {
18+
try {
19+
this.logger.log('스페이스 정보 업데이트 시작', {
20+
method: 'updateBySpace',
21+
spaceId: id,
22+
length: space.length,
23+
});
24+
25+
let spaceJsonData;
26+
try {
27+
spaceJsonData = JSON.parse(space);
28+
} catch (error) {
29+
throw new Error(`유효하지 않은 스페이스 JSON 데이터: ${error.message}`);
30+
}
31+
32+
const updateDto = {
33+
edges: JSON.stringify(spaceJsonData.edges),
34+
nodes: JSON.stringify(spaceJsonData.nodes),
35+
};
36+
37+
const updatedSpace = await this.spaceModel
38+
.findOneAndUpdate({ id }, { $set: updateDto }, { new: true })
39+
.exec();
40+
41+
if (!updatedSpace) {
42+
throw new Error(`ID가 ${id}인 스페이스를 찾을 수 없습니다.`);
43+
}
44+
45+
this.logger.log('스페이스 정보 업데이트 완료', {
46+
method: 'updateBySpace',
47+
spaceId: id,
48+
success: !!updatedSpace,
49+
});
50+
51+
return updatedSpace;
52+
} catch (error) {
53+
this.logger.error('스페이스 정보 업데이트 실패', {
54+
method: 'updateBySpace',
55+
spaceId: id,
56+
error: error.message,
57+
stack: error.stack,
58+
});
59+
throw error;
60+
}
61+
}
62+
63+
async findBySpace(id: string) {
64+
try {
65+
this.logger.log('스페이스 정보 조회 시작', {
66+
method: 'findBySpace',
67+
spaceId: id,
68+
});
69+
70+
const space = await this.spaceModel.findOne({ id }).exec();
71+
72+
if (!space) {
73+
this.logger.error(`ID가 ${id}인 스페이스를 찾을 수 없습니다.`);
74+
throw new BadRequestException(ERROR_MESSAGES.NOTE.NOT_FOUND);
75+
}
76+
77+
this.logger.log('스페이스 정보 조회 완료', {
78+
method: 'findBySpace',
79+
spaceId: id,
80+
found: !!space,
81+
});
82+
83+
return space;
84+
} catch (error) {
85+
this.logger.error('스페이스 정보 조회 실패', {
86+
method: 'findBySpace',
87+
spaceId: id,
88+
error: error.message,
89+
stack: error.stack,
90+
});
91+
throw error;
92+
}
93+
}
94+
}

packages/collaborative/src/collaborative/collaborative.type.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

packages/collaborative/src/note/note.schema.ts renamed to packages/collaborative/src/collaborative/schema/note.schema.ts

File renamed without changes.

packages/collaborative/src/space/space.schema.ts renamed to packages/collaborative/src/collaborative/schema/space.schema.ts

File renamed without changes.

packages/collaborative/src/note/dto/note.dto.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/collaborative/src/note/note.module.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)