Postgres에서 Typescript 유형 생성
Postgres 데이터베이스 모델을 추출하고 Typescript 형식을 생성할 수 있는 도구를 만들었습니다.그것 Kanel 이라고 합니다.
ORM이 아닙니다.나는 단지 편집기에 유형을 입력하고 싶을 뿐이다. 이렇게 하면 나는 할 수 있다
데이터베이스에서'반사'데이터를 얻는 것은 매우 간단하기 때문에 어떤 표, 열, 보기가 존재하는지 쉽게 확정할 수 있다.그러나 원시 정보는 일반적으로 모델의 의미를 묘사하기에 부족하다.각종 메모리 데이터를 원합니다.예를 들어 일부 테이블의 열은 암호화 값을 포함하고 있습니다. 이 열을 표시하면 서버의 데이터를 자동으로 복호화하고 검사해서 의외로 전방으로 전송되지 않도록 합니다.
나는 이런 메타데이터를 포함하는 데이터베이스를 보충하기 위해 어떤 파일을 사용하는 것을 고려하지만, 이것은 두 곳에서 유지보수를 해야 한다는 것을 의미한다.이것은 결코 완전한 정지 문자가 아니다. 왜냐하면 양자의 동기화를 유지하는 것은 매우 간단하지만, 그다지 좋지 않기 때문이다.다행히도, Postgres는 거의 모든 내용에 대해 주석을 작성할 수 있습니다. 표, 열, 과정 등입니다. 저는 이 내용을 사용하여 실제 주석을 작성할 수 있을 뿐만 아니라, 이 주석들은 JSDoc이 제 typescript 형식으로 들어갈 것입니다. 또한 표기 모드가 있는 사용자 정의 메타데이터에 대한 지원을 추가할 수 있습니다.그래서 나는 이런 주석을 처리할 수 있는 아주 작은 해석 단계를 추가했다.
COMMENT ON TABLE member
IS 'Member of the organization @cached @alias:person';
그러면 다음과 같은 메모 및 태그 맵이 생성됩니다.comment: 'Member of the organization',
tags: { cached: true, alias: 'person' }
현재, Kanel 자체는 현재 하나의 태그만 찾습니다:fixed. 이것은 테이블에 초기 값 설정 항목 형식을 만들지 말아야 한다는 것을 나타냅니다.하지만 원하는 모든 메타데이터로 확장할 수 있습니다.카넬을 뛰게 하는 건 쉬워요.라는 프로필을 만들어야 합니다.kanelrc.js는 실행 중인 데이터베이스 (일반적으로 로컬 개발자 데이터베이스) 에 접근할 수 있습니다.이것은 최소 구성 파일입니다.
const path = require('path');
module.exports = {
connection: {
host: 'localhost',
user: 'postgres',
password: 'postgres',
database: 'acme',
},
schemas: [
{
name: 'public',
modelFolder: path.join(\_\_dirname, 'src', 'models'),
},
],
};
Kanel을 devdependences에 추가한 경우 다음을 실행할 수 있습니다.$ npx kanel
.../src/models 폴더에서 모드를 위한 typescript 파일을 생성합니다.그것들은 이렇게 보인다.보시다시피, 두 개의 인터페이스를 만들었습니다: Actor와 ActorInitializer. 초기화기에는 기본값이 있는 선택 가능한 필드가 포함되어 있습니다.이외에도 ActorId라는 id 유형을 만들었습니다. 이 유형은 flavoring라는 기교 (브랜드와 유사하지만 다른 것) 를 사용하여 표시 유형을 모의합니다.이것은 한 테이블에 속하는 id를 다른 테이블에 분배하는 실례를 허용하지 않는다는 것을 의미합니다
Typescript를 사용하고 있다면 다른 유형을 사용한 것처럼 사용할 수 있습니다.Javascript를 사용하는 경우에도 JSDoc 주석을 사용할 수 있습니다.이것:
/\*\* @type {import('./models/Actor').default} \*/
const actor = fetchActor();
actor 변수를actor 실례로 표시합니다.만약 사용하는 편집기가 VSCode와 같은 typescript 언어 서버를 지원한다면, 접근할 때 자동으로 조언을 받을 것입니다.tsconfig에서 checkJs를 사용할 수도 있습니다.json 또는 jsconfig.json 파일, 입력 오류가 발생하면 빨간색 곡선을 얻을 수 있습니다
물론, 현재 이러한 유형을 처리할 수 있는 검색 라이브러리가 필요합니다. 죄송합니다. 본문을 작성할 때, 저는 하위 운동 코드 라이브러리에서 원본을 추출하지 않았습니다.하지만, 나는 이렇게 할 계획이니, 계속 관심을 가져주세요
Reference
이 문제에 관하여(Postgres에서 Typescript 유형 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kristiandupont/generating-typescript-types-from-postgres-o91텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)