@drizzle-adapter/sqlite-core

中文文档
1.1.1发布于 2026/03/26MITTypeScriptES Module近 30 天下载 2万

Drizzle适配器生态系统共享SQLite功能.

中文使用文档
文档目录12 节
  1. 概览
  2. 目的
  3. 安装
  4. 适用于适配器开发者
  5. 数据类型
  6. 处理错误
  7. 查询大楼
  8. 类型映射
  9. SQLite- 特定特性
  10. 日期/时间
  11. 捐款
  12. 相关软件包

@ 细雨适应器/ sqlite- core

Drizzle适配器生态系统共享SQLite功能.

概览

这个 @drizzle-adapter/sqlite-core 包提供了SQLite兼容适配器在Drizzle适配器生态系统中使用的共享SQLite功能. 此软件包是一个内部依赖:

目的

这个软件包将不同SQLite兼容适配器的SQLite特定功能标准化:

  • 常见的 SQLite 数据类型定义
  • 共享 SQLite 查询构建逻辑
  • 统一 SQLite 错误处理
  • 通用 SQLite 工具函数

安装

# This package is typically not installed directly but as a dependency of SQLite adapters
pnpm install @drizzle-adapter/sqlite-core

适用于适配器开发者

如果您正在开发用于 Drizzle 适应器生态系统的新的 SQLite 兼容适配器, 您应该使用此包来确保与其他 SQLite 适配器的一致性 :

import { SQLiteDrizzleDataTypes } from '@drizzle-adapter/sqlite-core';

export class YourSQLiteAdapter implements DrizzleAdapterInterface {
  public getDataTypes(): SQLiteDrizzleDataTypes {
    return new SQLiteDrizzleDataTypes();
  }
  
  // ... rest of your adapter implementation
}

数据类型

该包提供了标准化的SQLite数据类型定义:

const dataTypes = new SQLiteDrizzleDataTypes();

const table = dataTypes.dbTable('example', {
  // Numeric types
  id: dataTypes.dbInteger('id').primaryKey().autoincrement(),
  count: dataTypes.dbInteger('count'),
  amount: dataTypes.dbReal('amount'),
  
  // String types
  name: dataTypes.dbText('name'),
  description: dataTypes.dbText('description'),
  
  // Date/Time types (stored as INTEGER or TEXT)
  createdAt: dataTypes.dbInteger('created_at')
    .default(sql`(strftime('%s', 'now'))`),
  updatedAt: dataTypes.dbText('updated_at')
    .default(sql`CURRENT_TIMESTAMP`),
  
  // SQLite-specific handling
  json: dataTypes.dbText('json'), // JSON stored as TEXT
  isActive: dataTypes.dbInteger('is_active'), // Boolean as INTEGER
  blob: dataTypes.dbBlob('data') // Binary data
});

处理错误

软件包为 SQLite 特定错误提供统一错误处理:

import { handleSQLiteError } from '@drizzle-adapter/sqlite-core';

try {
  // Your database operation
} catch (error) {
  throw handleSQLiteError(error);
}

查询大楼

该套件包括用于构建 SQLite 特定查询的公用事业:

import { 
  buildInsertQuery,
  buildUpdateQuery,
  buildDeleteQuery,
  buildSelectQuery,
  buildFTSQuery
} from '@drizzle-adapter/sqlite-core';

// Build INSERT query
const insertQuery = buildInsertQuery(table, data);

// Build UPDATE query with JSON operations
const updateQuery = buildUpdateQuery(table, {
  json: sql`json_set(json, '$.key', 'value')`
});

// Build DELETE query with conditions
const deleteQuery = buildDeleteQuery(table, conditions);

// Build SELECT query with joins
const selectQuery = buildSelectQuery({
  table,
  joins: [...],
  conditions: [...],
  orderBy: [...]
});

// Build full-text search query
const searchQuery = buildFTSQuery({
  table: 'posts_fts',
  searchTerm: 'search term',
  columns: ['title', 'content']
});

类型映射

软件包处理 SQLite 特定类型映射 :

import { mapSQLiteType } from '@drizzle-adapter/sqlite-core';

// Map JavaScript types to SQLite types
const sqliteType = mapSQLiteType(value);

// Map SQLite types to JavaScript types
const jsValue = mapToJavaScript(sqliteValue, sqliteType);

// Handle JSON serialization
const jsonText = serializeJSON(value);
const jsonValue = deserializeJSON(text);

// Handle date/time
const timestamp = dateToUnixTimestamp(date);
const date = unixTimestampToDate(timestamp);

SQLite- 特定特性

import { 
  createFTSTable,
  createFTSIndex,
  handleJSONOperations,
  handleDateTimeOperations
} from '@drizzle-adapter/sqlite-core';

// Create FTS table
const ftsSQL = createFTSTable('posts_fts', ['title', 'content']);

// Create FTS index
const indexSQL = createFTSIndex('posts_fts_idx', 'posts', ['title', 'content']);

// Handle JSON operations
const jsonCondition = handleJSONOperations(column, path, value);

// Handle date/time operations
const dateCondition = handleDateTimeOperations(column, operator, value);

日期/时间

import { 
  getCurrentTimestamp,
  formatDateTime,
  parseDateTime,
  addInterval
} from '@drizzle-adapter/sqlite-core';

// Get current timestamp
const now = getCurrentTimestamp();

// Format date/time
const formatted = formatDateTime(date, format);

// Parse date/time
const date = parseDateTime(text, format);

// Add interval
const future = addInterval(date, { days: 7, hours: 12 });

捐款

这个软件包作为Drizzle适配器生态系统的一部分得以维护. 如果你愿意贡献:

  1. 叉子存储器
  2. 创建您的特性分支( E)git checkout -b feature/amazing-feature(中文(简体) )
  3. 提交更改( E)git commit -m 'Add some amazing feature'(中文(简体) )
  4. 推向分行(git push origin feature/amazing-feature(中文(简体) )
  5. 打开拉请求

版本与发布记录

@drizzle-adapter/sqlite-core 共发布 13 个版本,首次发布于 2024/12/03;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.1.1latest2026/03/267 个月前
1.0.152025/09/211.1 年前
1.0.142025/07/171.3 年前
1.0.122025/07/121.3 年前
1.0.112025/07/121.3 年前
1.0.92025/07/041.4 年前

关于 @drizzle-adapter/sqlite-core 的常见问题

@drizzle-adapter/sqlite-core 是什么?

Drizzle适配器生态系统共享SQLite功能.

如何安装 @drizzle-adapter/sqlite-core?

在项目目录运行 npm install @drizzle-adapter/sqlite-core,或使用 pnpm add / yarn add / bun add。

@drizzle-adapter/sqlite-core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@drizzle-adapter/sqlite-core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@drizzle-adapter/sqlite-core 可以商用吗?

@drizzle-adapter/sqlite-core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@drizzle-adapter/sqlite-core 的下载量有多少?

根据 npm 官方下载统计,@drizzle-adapter/sqlite-core 在 2026/10/13 – 2026/11/11 这 30 天内被下载 20,346 次,日均约 678 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@drizzle-adapter/sqlite-core 还在维护吗?

最新版本 1.1.1 发布于 2026/03/26(7 个月前);至今共发布 13 个版本,其中过去 12 个月发布了 1 个;首次发布于 2024/12/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。