Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@log2doc/db) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@log2doc/db
Log2Doc 시스템의 데이터 저장 계층. PostgreSQL과 DrizzleORM을 사용하여 수집된 원시 데이터를 저장하고 조회합니다.
설치
yarn add @log2doc/db데이터베이스 설정 가이드
PostgreSQL 설정 (Docker 사용)
프로젝트 디렉토리에 docker-compose.yml 파일을 생성합니다:
version: '3.8'
services:
postgres:
image: postgres:15
container_name: log2doc-postgres
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: log2doc
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
volumes:
postgres_data:
name: log2doc-postgres-dataDocker Compose로 PostgreSQL을 시작합니다:
docker-compose up -d컨테이너가 실행 중인지 확인합니다:
docker-compose ps스키마 마이그레이션 실행 (패키지 사용자)
패키지 사용자는 다음과 같이 스키마를 생성할 수 있습니다:
- 프로젝트에 마이그레이션 스크립트를 추가합니다:
package.json에 다음 스크립트를 추가합니다:
"scripts": {
"db:migrate": "npx drizzle-kit push:pg --config=./db-migrate.config.js"
}db-migrate.config.js파일을 생성합니다:
// db-migrate.config.js
module.exports = {
schema: './node_modules/@log2doc/db/dist/schema',
out: './drizzle',
driver: 'pg',
dbCredentials: {
connectionString: process.env.DATABASE_URL || 'postgresql://postgres:postgres@localhost:5432/log2doc',
},
};- 마이그레이션 실행:
# 환경 변수 설정 (필요한 경우)
export DATABASE_URL=postgresql://postgres:postgres@localhost:5432/log2doc
# 마이그레이션 실행
npm run db:migrate데이터베이스 연결 확인
PostgreSQL 클라이언트를 사용하여 연결을 확인합니다:
psql postgresql://postgres:postgres@localhost:5432/log2doc
# 테이블 목록 확인
\dt
# raw_data 테이블 구조 확인
\d raw_data문제 해결
연결 오류
오류:
연결 실패 - host "localhost", user "postgres", database "log2doc"확인:
- PostgreSQL 컨테이너가 실행 중인지 확인
- 포트 설정이 올바른지 확인
- 호스트명이 올바른지 확인 (Docker 내부에서는
localhost대신postgres사용)
마이그레이션 오류
오류:
마이그레이션 실패확인:
- DATABASE_URL 환경 변수가 올바르게 설정되었는지 확인
- 데이터베이스 연결이 가능한지 확인
- 로그에서 구체적인 오류 메시지 확인
- 패키지가 최신 버전인지 확인
기본 사용법
환경 설정
# .env 파일 또는 환경변수로 설정
DATABASE_URL=postgresql://username:password@localhost:5432/db_name데이터 저장
import { insertRawData } from '@log2doc/db';
import { RawData } from '@log2doc/types';
const rawData: RawData = {
id: 'unique-id-1',
source: {
id: 'slack-1',
type: 'slack',
name: 'Slack 채널'
},
fetchedAt: new Date().toISOString(),
payloadType: 'slack.message',
payload: { /* 메시지 데이터 */ },
};
await insertRawData([rawData]);데이터 조회
import { getRawData } from '@log2doc/db';
// 모든 데이터 조회 (기본 페이지 크기: 100)
const allData = await getRawData();
// 필터링 조회
const slackData = await getRawData({
sourceType: 'slack',
payloadType: 'slack.message',
startDate: '2024-01-01T00:00:00Z',
endDate: '2024-12-31T23:59:59Z',
limit: 50,
offset: 0,
});커스텀 클라이언트 생성
import { createClient, RawDataRepository } from '@log2doc/db';
const client = createClient({
connectionString: 'postgresql://username:password@localhost:5432/custom_db',
maxConnections: 20,
idleTimeout: 60,
});
const repository = new RawDataRepository(client);
const data = await repository.getRawData({ sourceType: 'github' });라이센스
ISC