- Add GitHub Actions workflow for automated CI/CD - Configure Node.js 18.x and 20.x matrix testing - Add TypeScript type checking step - Add ESLint code quality checks with enhanced rules - Add Prettier formatting verification - Add production build validation - Upload build artifacts for deployment - Set up automated testing on push/PR - Replace console.log with environment-aware logger - Add pre-commit hooks for code quality - Exclude archive folder from linting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
91 lines
3.1 KiB
TypeScript
91 lines
3.1 KiB
TypeScript
/**
|
|
* Appwrite 연결 테스트 스크립트
|
|
*
|
|
* 이 파일은 Appwrite 서비스와의 연결을 테스트하기 위한 스크립트입니다.
|
|
* 개발 가이드라인에 따라 UI 스레드를 차단하지 않도록 비동기 처리와 오류 처리를 포함합니다.
|
|
*/
|
|
|
|
import { Client, Account } from "appwrite";
|
|
|
|
import { appwriteLogger } from "@/utils/logger";
|
|
// 설정 값 직접 지정
|
|
const endpoint = "https://a11.ism.kr/v1";
|
|
const projectId = "68182a300039f6d700a6"; // 올바른 프로젝트 ID
|
|
const apiKey =
|
|
"standard_9672cc2d052d4fc56d9d28e75c6476ff1029d932b7d375dbb4bb0f705d741d8e6d9ae154929009e01c7168810884b6ee80e6bb564d3fe6439b8b142ed4a8d287546bb0bed2531c20188a7ecc36e6f9983abb1ab0022c1656cf2219d4c2799655c7baef00ae4861fe74186dbb421141d9e2332f2fad812975ae7b4b7f57527cea";
|
|
|
|
// 테스트 함수
|
|
async function testAppwriteConnection() {
|
|
appwriteLogger.info("Appwrite 연결 테스트 시작...");
|
|
appwriteLogger.info("설정 정보:", {
|
|
endpoint,
|
|
projectId,
|
|
apiKey: apiKey ? "설정됨" : "설정되지 않음",
|
|
});
|
|
|
|
try {
|
|
// Appwrite 클라이언트 생성
|
|
const client = new Client();
|
|
|
|
client.setEndpoint(endpoint).setProject(projectId);
|
|
|
|
// 계정 서비스 초기화
|
|
const account = new Account(client);
|
|
|
|
// 연결 테스트 (익명 세션 생성 시도)
|
|
try {
|
|
appwriteLogger.info("익명 세션 생성 시도...");
|
|
const session = await account.createAnonymousSession();
|
|
appwriteLogger.info("익명 세션 생성 성공:", session.$id);
|
|
|
|
// 세션 정보 확인
|
|
try {
|
|
const user = await account.get();
|
|
appwriteLogger.info("사용자 정보 확인 성공:", user.$id);
|
|
} catch (userError) {
|
|
appwriteLogger.error("사용자 정보 확인 실패:", userError);
|
|
}
|
|
|
|
// 세션 삭제
|
|
try {
|
|
await account.deleteSession(session.$id);
|
|
appwriteLogger.info("세션 삭제 성공");
|
|
} catch (deleteError) {
|
|
appwriteLogger.error("세션 삭제 실패:", deleteError);
|
|
}
|
|
} catch (sessionError) {
|
|
appwriteLogger.error("익명 세션 생성 실패:", sessionError);
|
|
|
|
// 프로젝트 정보 확인 시도
|
|
try {
|
|
appwriteLogger.info("프로젝트 정보 확인 시도...");
|
|
// 프로젝트 정보는 API 키가 있어야 확인 가능
|
|
if (!apiKey) {
|
|
appwriteLogger.error(
|
|
"API 키가 없어 프로젝트 정보를 확인할 수 없습니다."
|
|
);
|
|
} else {
|
|
appwriteLogger.info(
|
|
"API 키가 있지만 클라이언트에서는 사용할 수 없습니다."
|
|
);
|
|
}
|
|
} catch (projectError) {
|
|
appwriteLogger.error("프로젝트 정보 확인 실패:", projectError);
|
|
}
|
|
}
|
|
} catch (error) {
|
|
appwriteLogger.error("Appwrite 클라이언트 생성 오류:", error);
|
|
}
|
|
|
|
appwriteLogger.info("Appwrite 연결 테스트 완료");
|
|
}
|
|
|
|
// 테스트 실행
|
|
testAppwriteConnection()
|
|
.then(() => {
|
|
appwriteLogger.info("테스트가 완료되었습니다.");
|
|
})
|
|
.catch((error) => {
|
|
appwriteLogger.error("테스트 중 예외 발생:", error);
|
|
});
|