While nuxt-auto-crud works seamlessly with NuxtHub, it is not a hard dependency. The module is designed to work with Drizzle ORM and any SQLite database.
If you prefer to use a different SQLite provider (like better-sqlite3, libsql, or bun:sqlite), you just need to ensure your useDrizzle composable returns a valid Drizzle SQLite instance.
Instead of @nuxthub/core, install the driver for your database.
pnpm add better-sqlite3
pnpm add -D @types/better-sqlite3
yarn add better-sqlite3
yarn add -D @types/better-sqlite3
npm install better-sqlite3
npm install -D @types/better-sqlite3
bun add better-sqlite3
bun add --dev @types/better-sqlite3
pnpm add @libsql/client
yarn add @libsql/client
npm install @libsql/client
bun add @libsql/client
useDrizzleThe module looks for a useDrizzle export in your drizzlePath (default: server/utils/drizzle.ts). You need to configure this file to export your database instance.
better-sqlite3// server/utils/drizzle.ts
import { drizzle } from 'drizzle-orm/better-sqlite3'
import Database from 'better-sqlite3'
import * as schema from '../database/schema'
// Initialize the database
const sqlite = new Database('sqlite.db')
export const db = drizzle(sqlite, { schema })
// Export the useDrizzle composable expected by nuxt-auto-crud
export function useDrizzle() {
return db
}
// Export schema tables for use in your app
export const tables = schema
export { sql, eq, and, or } from 'drizzle-orm'
libsql (Turso)// server/utils/drizzle.ts
import { drizzle } from 'drizzle-orm/libsql'
import { createClient } from '@libsql/client'
import * as schema from '../database/schema'
const client = createClient({
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN,
})
export const db = drizzle(client, { schema })
export function useDrizzle() {
return db
}
export const tables = schema
export { sql, eq, and, or } from 'drizzle-orm'
Ensure your nuxt.config.ts points to this file (this is the default, so you might not need to change anything):
export default defineNuxtConfig({
modules: ['nuxt-auto-crud'],
autoCrud: {
drizzlePath: 'server/utils/drizzle', // Default
schemaPath: 'server/database/schema', // Default
},
})
That's it! The module will now use your custom Drizzle setup to perform CRUD operations.