@ 细雨适应器/ pg- core
Drizzle适配器生态系统共享PostgreSQL功能.
概览
这个 @drizzle-adapter/pg-core 软件包提供PostgreSQL共享功能,由PostgreSQL兼容适配器在Drizzle适配器生态系统中使用. 此软件包是一个内部依赖:
目的
这个软件包将 PostgreSQL 特定功能标准化,跨越不同的 PostgreSQL 兼容适配器:
- 常见的 PostgreSQL 数据类型定义
- 共享 PostgreSQL 查询建筑逻辑
- 统一 PostgreSQL 错误处理
- 通用 PostreSQL 函数
安装
# This package is typically not installed directly but as a dependency of PostgreSQL adapters
pnpm install @drizzle-adapter/pg-core
适用于适配器开发者
如果您正在为 Drizzle 适应器生态系统开发一个新的 PostgreSQL 兼容适配器, 您应该使用这个软件包来确保与其他 PostgreSQL 适配器的一致性 :
import { PostgresDrizzleDataTypes } from '@drizzle-adapter/pg-core';
export class YourPostgresAdapter implements DrizzleAdapterInterface {
public getDataTypes(): PostgresDrizzleDataTypes {
return new PostgresDrizzleDataTypes();
}
// ... rest of your adapter implementation
}
数据类型
该软件包提供了标准化的PostgreSQL数据类型定义:
const dataTypes = new PostgresDrizzleDataTypes();
const table = dataTypes.dbTable('example', {
// Numeric types
id: dataTypes.dbSerial('id').primaryKey(),
count: dataTypes.dbInteger('count'),
price: dataTypes.dbDecimal('price', { precision: 10, scale: 2 }),
// String types
name: dataTypes.dbText('name'),
description: dataTypes.dbText('description'),
// Date/Time types
createdAt: dataTypes.dbTimestampTz('created_at').defaultNow(),
updatedAt: dataTypes.dbTimestampTz('updated_at').onUpdateNow(),
// PostgreSQL-specific types
tags: dataTypes.dbArray('tags', { type: 'text' }),
metadata: dataTypes.dbJsonb('metadata'),
searchVector: dataTypes.dbTsVector('search_vector'),
status: dataTypes.dbEnum('status', ['active', 'inactive']),
point: dataTypes.dbPoint('location'),
range: dataTypes.dbRange('valid_period', { type: 'timestamp' })
});
处理错误
该包为 PostgreSQL 特定错误提供统一错误处理:
import { handlePostgresError } from '@drizzle-adapter/pg-core';
try {
// Your database operation
} catch (error) {
throw handlePostgresError(error);
}
查询大楼
该套件包括用于构建 PostgreSQL 特定查询的公用事业:
import {
buildInsertQuery,
buildUpdateQuery,
buildDeleteQuery,
buildSelectQuery,
buildFullTextSearchQuery
} from '@drizzle-adapter/pg-core';
// Build INSERT query
const insertQuery = buildInsertQuery(table, data);
// Build UPDATE query with JSONB operations
const updateQuery = buildUpdateQuery(table, {
metadata: sql`${table.metadata} || '{"key": "value"}'::jsonb`
});
// 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 = buildFullTextSearchQuery({
table,
columns: ['title', 'content'],
searchTerm: 'search term',
language: 'english'
});
类型映射
软件包处理 PostgreSQL 特定类型映射 :
import { mapPostgresType } from '@drizzle-adapter/pg-core';
// Map JavaScript types to PostgreSQL types
const pgType = mapPostgresType(value);
// Map PostgreSQL types to JavaScript types
const jsValue = mapToJavaScript(pgValue, pgType);
// Handle array types
const arrayType = mapArrayType(elementType);
// Handle range types
const rangeType = mapRangeType(boundType);
PostgreSQL 特定特性
import {
createTsVector,
createGinIndex,
handleArrayOperations,
handleJsonbOperations
} from '@drizzle-adapter/pg-core';
// Create tsvector column
const tsVectorSQL = createTsVector(['title', 'content'], 'english');
// Create GIN index for full-text search
const indexSQL = createGinIndex('posts_search_idx', 'posts', 'search_vector');
// Handle array operations
const arrayCondition = handleArrayOperations(column, operator, values);
// Handle JSONB operations
const jsonbCondition = handleJsonbOperations(column, path, value);
捐款
这个软件包作为Drizzle适配器生态系统的一部分得以维护. 如果你愿意贡献:
- 叉子存储器
- 创建您的特性分支( E)
git checkout -b feature/amazing-feature(中文(简体) ) - 提交更改( E)
git commit -m 'Add some amazing feature'(中文(简体) ) - 推向分行(
git push origin feature/amazing-feature(中文(简体) ) - 打开拉请求
相关软件包
- @ 细雨适应器/ 核心 - 核心接口和类型
- @ 细雨- 适应器/ 节点- 张贴 - 使用节点起子的PostgreSQL适配器
- @ 细雨适应器/ postgres-js - 使用postgres.js的PostgreSQL适配器
- @ rizzle- adapter/ neon- http - 无霓虹服务器的PostgreSQL适配器
- @ 细雨适应器/ pglite - 轻型PostgreSQL适配器