DrizzleORM v0.29.2 릴리스
Dec 25, 2023
수정 사항:
- planescale 관계형 테스트 개선 사항 추가 (#1579)
- FIX: 빈 PgArrays에 대한 문자열 이스케이프 수정 (#1640)
- SQLite의 exists 함수 구문 오류 수정 (#1647)
- AWS Data API에서 날짜를 올바르게 처리
- Hermes mixins 생성자 문제 해결
ESLint Drizzle 플러그인, v0.2.3
npm i eslint-plugin-drizzle@0.2.3
🎉 [ESLint] 함수 지원 추가 및 오류 메시지 개선
- Drizzle 객체를 함수에서 반환하거나 함수로부터 가져올 수 있도록 허용
- 오류 메시지의 제안에 더 나은 컨텍스트 추가
더 자세한 정보는 문서를 확인하세요.
새로운 드라이버
🎉 Expo SQLite 드라이버 출시
Expo SQLite 드라이버를 시작하려면 expo-sqlite
와 drizzle-orm
패키지를 설치해야 합니다.
npm install drizzle-orm expo-sqlite@next
그런 다음 다음과 같이 사용할 수 있습니다:
import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite/next";
const expoDb = openDatabaseSync("db.db");
const db = drizzle(expoDb);
await db.select().from(...)...
// 또는
db.select().from(...).then(...);
// 또는
db.select().from(...).all();
Drizzle 마이그레이션을 사용하려면 babel과 metro 설정 파일을 업데이트해야 합니다.
babel-plugin-inline-import
패키지를 설치합니다.
npm install babel-plugin-inline-import
babel.config.js
와metro.config.js
파일을 업데이트합니다.
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
+ plugins: [["inline-import", { "extensions": [".sql"] }]]
};
};
const { getDefaultConfig } = require('expo/metro-config');
/** @type {import('expo/metro-config').MetroConfig} */
const config = getDefaultConfig(__dirname);
+config.resolver.sourceExts.push('sql');
module.exports = config;
- 프로젝트 루트 폴더에
drizzle.config.ts
파일을 생성합니다.
import type { Config } from 'drizzle-kit';
export default {
schema: './db/schema.ts',
out: './drizzle',
dialect: 'sqlite',
driver: 'expo',
} satisfies Config;
스키마 파일과 drizzle.config.ts
파일을 생성한 후, 다음과 같이 마이그레이션을 생성할 수 있습니다:
npx drizzle-kit generate
그런 다음 ./drizzle
폴더에서 migrations.js
파일을 App.tsx
파일로 가져와 useMigrations
훅이나 migrate
함수를 사용합니다.
import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite/next";
import { useMigrations } from 'drizzle-orm/expo-sqlite/migrator';
import migrations from './drizzle/migrations';
const expoDb = openDatabaseSync("db.db");
const db = drizzle(expoDb);
export default function App() {
const { success, error } = useMigrations(db, migrations);
if (error) {
return (
마이그레이션 오류: {error.message}
);
}
if (!success) {
return (
마이그레이션 진행 중...
);
}
return ...여러분의 애플리케이션 컴포넌트;
}