DrizzleORM v0.31.1 릴리스
Jun 4, 2024

새로운 기능

Live Queries 🎉

Drizzle + Expo에 대한 자세한 설명은 discussions을 참고하세요

v0.31.1부터 Drizzle ORM은 Expo SQLite Live Queries를 네이티브로 지원합니다! 필요한 데이터베이스 변경 사항을 감지하고 자동으로 데이터베이스 쿼리를 재실행하는 네이티브 useLiveQuery React Hook을 구현했습니다. SQL 방식과 Drizzle Queries 모두에서 작동합니다:

import { useLiveQuery, drizzle } from 'drizzle-orm/expo-sqlite';
import { openDatabaseSync } from 'expo-sqlite';
import { users } from './schema';
import { Text } from 'react-native';

const expo = openDatabaseSync('db.db', { enableChangeListener: true }); // <-- enable change listeners
const db = drizzle(expo);

const App = () => {
  // Re-renders automatically when data changes
  const { data } = useLiveQuery(db.select().from(users));

  // const { data, error, updatedAt } = useLiveQuery(db.query.users.findFirst());
  // const { data, error, updatedAt } = useLiveQuery(db.query.users.findMany());


  return <Text>{JSON.stringify(data)}</Text>;
};

export default App;

기존의 React Hook API를 유지하기 위해 ORM 자체의 API는 의도적으로 변경하지 않았습니다. 따라서 db.select().from(users).useLive()db.query.users.useFindMany()가 아닌 useLiveQuery(databaseQuery) 방식을 사용합니다.

또한 React QueryElectric SQL의 관례를 따라 명확한 에러 처리를 위해 Hook의 결과로 data, error, updatedAt 필드를 제공하기로 결정했습니다.