DrizzleORM v0.29.2 릴리스
Dec 25, 2023

수정 사항:

ESLint Drizzle 플러그인, v0.2.3

npm i eslint-plugin-drizzle@0.2.3

🎉 [ESLint] 함수 지원 추가 및 오류 메시지 개선

더 자세한 정보는 문서를 확인하세요.

새로운 드라이버

🎉 Expo SQLite 드라이버 출시

Expo SQLite 드라이버를 시작하려면 expo-sqlitedrizzle-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 설정 파일을 업데이트해야 합니다.

  1. babel-plugin-inline-import 패키지를 설치합니다.
npm install babel-plugin-inline-import
  1. babel.config.jsmetro.config.js 파일을 업데이트합니다.
babel.config.js
module.exports = function(api) {
  api.cache(true);

  return {
    presets: ['babel-preset-expo'],
+   plugins: [["inline-import", { "extensions": [".sql"] }]]
  };
};
metro.config.js
const { getDefaultConfig } = require('expo/metro-config');

/** @type {import('expo/metro-config').MetroConfig} */
const config = getDefaultConfig(__dirname);

+config.resolver.sourceExts.push('sql');

module.exports = config;
  1. 프로젝트 루트 폴더에 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 ...여러분의 애플리케이션 컴포넌트;
}