backup: 사용하지 않는 파일 삭제 전 복구 지점

- 전체 371개 파일 중 82개 미사용 파일 식별
- Phase 1: 33개 파일 삭제 예정 (100% 안전)
- Phase 2: 30개 파일 삭제 검토 예정
- Phase 3: 19개 파일 수동 검토 예정

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-09-02 19:51:40 +09:00
parent 650cd4be55
commit c419f8f458
149 changed files with 12934 additions and 3644 deletions

View File

@@ -0,0 +1,180 @@
import 'package:dio/dio.dart';
import 'package:get_it/get_it.dart';
import 'package:superport/core/constants/api_endpoints.dart';
import 'package:superport/core/errors/exceptions.dart';
import 'package:superport/data/datasources/remote/api_client.dart';
import 'package:superport/data/models/model/model_dto.dart';
abstract class ModelRemoteDataSource {
Future<ModelListDto> getModels({
int page = 1,
int perPage = 10,
String? search,
int? vendorId,
bool? includeDeleted,
});
Future<ModelDto> createModel(CreateModelRequest request);
Future<ModelDto> getModelDetail(int id);
Future<ModelDto> updateModel(int id, UpdateModelRequest request);
Future<void> deleteModel(int id);
Future<ModelDto> restoreModel(int id);
Future<List<ModelDto>> getModelsByVendor(int vendorId);
}
class ModelRemoteDataSourceImpl implements ModelRemoteDataSource {
final ApiClient _apiClient = GetIt.instance<ApiClient>();
@override
Future<ModelListDto> getModels({
int page = 1,
int perPage = 10,
String? search,
int? vendorId,
bool? includeDeleted,
}) async {
try {
final queryParams = <String, dynamic>{
'page': page,
'per_page': perPage,
};
if (search != null && search.isNotEmpty) {
queryParams['search'] = search;
}
if (vendorId != null) {
queryParams['vendor_id'] = vendorId;
}
if (includeDeleted != null) {
queryParams['include_deleted'] = includeDeleted;
}
final response = await _apiClient.dio.get(
ApiEndpoints.models,
queryParameters: queryParams,
);
if (response.statusCode == 200) {
return ModelListDto.fromJson(response.data);
} else {
throw ServerException(message: '모델 목록 조회 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '모델 목록 조회 실패: $e');
}
}
@override
Future<ModelDto> getModelDetail(int id) async {
try {
final response = await _apiClient.dio.get('${ApiEndpoints.models}/$id');
if (response.statusCode == 200) {
return ModelDto.fromJson(response.data);
} else {
throw ServerException(message: '모델 상세 조회 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '모델 상세 조회 실패: $e');
}
}
@override
Future<ModelDto> createModel(CreateModelRequest request) async {
try {
final response = await _apiClient.dio.post(
ApiEndpoints.models,
data: request.toJson(),
);
if (response.statusCode == 201) {
return ModelDto.fromJson(response.data);
} else {
throw ServerException(message: '모델 생성 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '모델 생성 실패: $e');
}
}
@override
Future<ModelDto> updateModel(int id, UpdateModelRequest request) async {
try {
final response = await _apiClient.dio.put(
'${ApiEndpoints.models}/$id',
data: request.toJson(),
);
if (response.statusCode == 200) {
return ModelDto.fromJson(response.data);
} else {
throw ServerException(message: '모델 수정 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '모델 수정 실패: $e');
}
}
@override
Future<void> deleteModel(int id) async {
try {
final response = await _apiClient.dio.delete('${ApiEndpoints.models}/$id');
if (response.statusCode != 200) {
throw ServerException(message: '모델 삭제 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '모델 삭제 실패: $e');
}
}
@override
Future<ModelDto> restoreModel(int id) async {
try {
final response = await _apiClient.dio.put('${ApiEndpoints.models}/$id/restore');
if (response.statusCode == 200) {
return ModelDto.fromJson(response.data);
} else {
throw ServerException(message: '모델 복구 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '모델 복구 실패: $e');
}
}
@override
Future<List<ModelDto>> getModelsByVendor(int vendorId) async {
try {
final response = await _apiClient.dio.get('${ApiEndpoints.modelsByVendor}/$vendorId');
if (response.statusCode == 200) {
final List<dynamic> data = response.data;
return data.map((json) => ModelDto.fromJson(json)).toList();
} else {
throw ServerException(message: '제조사별 모델 조회 실패: ${response.statusCode}');
}
} on DioException catch (e) {
throw ServerException(message: '네트워크 오류: ${e.message}');
} catch (e) {
throw ServerException(message: '제조사별 모델 조회 실패: $e');
}
}
}