DrizzleORM v0.29.2 릴리스
Dec 25, 2023
수정 사항
- Planescale 관계형 테스트 개선 추가 (#1579)
- 수정: 빈 PgArrays의 올바른 문자열 이스케이프 (#1640)
- SQLite exists 함수의 잘못된 구문 수정 (#1647)
- AWS Data API의 날짜 처리 개선
- Hermes mixins 생성자 이슈 수정
ESLint Drizzle Plugin, v0.2.3
npm i eslint-plugin-drizzle@0.2.3🎉 [ESLint] 함수 지원 추가 및 오류 메시지 개선
- Drizzle 객체가 함수에서 반환되거나 검색될 수 있도록 허용
- 오류 메시지의 제안에 더 나은 컨텍스트 추가
자세한 내용은 문서를 확인하세요.
새로운 드라이버
🎉 Expo SQLite Driver 사용 가능
Expo SQLite Driver를 사용하려면 expo-sqlite와 drizzle-orm 패키지를 설치해야 합니다.
npm install drizzle-orm expo-sqlite@next그런 다음 다음과 같이 사용할 수 있습니다:
import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite";
const expoDb = openDatabaseSync("db.db");
const db = drizzle(expoDb);
await db.select().from(...)...
// or
db.select().from(...).then(...);
// or
db.select().from(...).all();Drizzle 마이그레이션을 사용하려면 babel 및 metro 설정 파일을 업데이트해야 합니다.
babel-plugin-inline-import패키지를 설치합니다.
npm install babel-plugin-inline-importbabel.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 폴더에서 App.tsx 파일로 migrations.js 파일을 가져오고 useMigrations 훅 또는 migrate 함수를 사용해야 합니다.
import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite";
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 (
<View>
<Text>Migration error: {error.message}</Text>
</View>
);
}
if (!success) {
return (
<View>
<Text>Migration is in progress...</Text>
</View>
);
}
return ...your application component;
}