Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,9 @@ public enum MonitoredApp {
ANDROID_STUDIO,
XCODE,
UNITY,
}
BLENDER,
DATAGRIP,
NOTION,
FIGMA,
ROBLOX_STUDIO,
}
108 changes: 108 additions & 0 deletions src/main/resources/db/migration/V35__add_more_monitored_apps.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
ALTER TABLE record_sessions
DROP CONSTRAINT IF EXISTS ck_record_sessions_app_id;

ALTER TABLE record_sessions
ADD CONSTRAINT ck_record_sessions_app_id
CHECK (
app_id IS NULL
OR app_id IN (
'VSCODE',
'WEBSTORM',
'INTELLIJ_IDEA',
'PYCHARM',
'GOLAND',
'PHPSTORM',
'RUBYMINE',
'CLION',
'RIDER',
'ANDROID_STUDIO',
'XCODE',
'UNITY',
'BLENDER',
'DATAGRIP',
'NOTION',
'FIGMA',
'ROBLOX_STUDIO'
)
Comment on lines +8 to +26

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

동일한 app_id 목록이 4개의 테이블 제약 조건(CHECK constraint)에 중복해서 작성되어 있습니다. 현재는 기존의 방식을 따르고 있으나, 모니터링 대상 앱이 추가될 때마다 모든 테이블의 제약 조건을 수동으로 업데이트해야 하므로 실수가 발생하기 쉽습니다. 장기적으로는 monitored_apps와 같은 별도의 참조 테이블을 생성하고 외래 키(FK)를 참조하는 방식으로 개선하는 것을 권장합니다.

);

ALTER TABLE record_session_segments
DROP CONSTRAINT IF EXISTS ck_record_session_segments_app_id;

ALTER TABLE record_session_segments
ADD CONSTRAINT ck_record_session_segments_app_id
CHECK (
app_id IN (
'VSCODE',
'WEBSTORM',
'INTELLIJ_IDEA',
'PYCHARM',
'GOLAND',
'PHPSTORM',
'RUBYMINE',
'CLION',
'RIDER',
'ANDROID_STUDIO',
'XCODE',
'UNITY',
'BLENDER',
'DATAGRIP',
'NOTION',
'FIGMA',
'ROBLOX_STUDIO'
)
);

ALTER TABLE record_develop_sessions_v2
DROP CONSTRAINT IF EXISTS ck_record_develop_sessions_v2_app_id;

ALTER TABLE record_develop_sessions_v2
ADD CONSTRAINT ck_record_develop_sessions_v2_app_id
CHECK (
app_id IN (
'VSCODE',
'WEBSTORM',
'INTELLIJ_IDEA',
'PYCHARM',
'GOLAND',
'PHPSTORM',
'RUBYMINE',
'CLION',
'RIDER',
'ANDROID_STUDIO',
'XCODE',
'UNITY',
'BLENDER',
'DATAGRIP',
'NOTION',
'FIGMA',
'ROBLOX_STUDIO'
)
);

ALTER TABLE record_develop_session_segments_v2
DROP CONSTRAINT IF EXISTS ck_record_develop_session_segments_v2_app_id;

ALTER TABLE record_develop_session_segments_v2
ADD CONSTRAINT ck_record_develop_session_segments_v2_app_id
CHECK (
app_id IN (
'VSCODE',
'WEBSTORM',
'INTELLIJ_IDEA',
'PYCHARM',
'GOLAND',
'PHPSTORM',
'RUBYMINE',
'CLION',
'RIDER',
'ANDROID_STUDIO',
'XCODE',
'UNITY',
'BLENDER',
'DATAGRIP',
'NOTION',
'FIGMA',
'ROBLOX_STUDIO'
)
);
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ void execute_returnsMonitoredApps() {
new GetMonitoredAppsV2Data.Command(new Actor(1L))
);

assertThat(result.apps()).contains(MonitoredApp.VSCODE, MonitoredApp.INTELLIJ_IDEA, MonitoredApp.XCODE);
assertThat(result.apps()).contains(
MonitoredApp.VSCODE,
MonitoredApp.INTELLIJ_IDEA,
MonitoredApp.XCODE,
MonitoredApp.BLENDER,
MonitoredApp.DATAGRIP,
MonitoredApp.NOTION,
MonitoredApp.FIGMA,
MonitoredApp.ROBLOX_STUDIO
);
Comment on lines +24 to +33

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

현재 테스트 코드는 전체 모니터링 앱 중 일부만 수동으로 나열하여 검증하고 있습니다. MonitoredAppPolicyMonitoredApp.values()를 반환하도록 구현되어 있으므로, 테스트에서도 모든 enum 값이 포함되어 있는지 확인하는 것이 더 견고합니다. 이렇게 하면 향후 새로운 앱이 추가될 때마다 테스트 코드를 매번 수정하지 않아도 됩니다.

        assertThat(result.apps()).containsExactlyInAnyOrder(MonitoredApp.values());

}
}
Loading