@orient-bot/database
v1.1.0
Published
Database schemas, migrations, and clients for Orient
Readme
@orient-bot/database
Database schemas, migrations, and clients for the Orient.
Features
- Drizzle ORM: Type-safe database operations with PostgreSQL
- Schema Definitions: All tables defined using Drizzle schema
- Connection Pooling: Efficient database connections
- Type Exports: TypeScript types inferred from schema
Installation
pnpm add @orient-bot/databaseUsage
Basic Usage
import { getDatabase, schema, eq } from '@orient-bot/database';
// Get database instance
const db = getDatabase();
// Query messages
const messages = await db
.select()
.from(schema.messages)
.where(eq(schema.messages.phone, '1234567890'))
.limit(10);
// Insert a new message
await db.insert(schema.messages).values({
direction: 'incoming',
jid: '[email protected]',
phone: '1234567890',
text: 'Hello!',
isGroup: false,
timestamp: new Date(),
});Using Types
import type { Message, NewMessage, ChatPermission } from '@orient-bot/database';
const newMessage: NewMessage = {
direction: 'outgoing',
jid: '[email protected]',
phone: '1234567890',
text: 'Response',
isGroup: false,
timestamp: new Date(),
};Database Configuration
import { getDatabase } from '@orient-bot/database';
const db = getDatabase({
connectionString: process.env.DATABASE_URL,
maxConnections: 10,
idleTimeout: 30,
connectTimeout: 5,
});Cleanup
import { closeDatabase } from '@orient-bot/database';
// Close connection on app shutdown
process.on('SIGTERM', async () => {
await closeDatabase();
process.exit(0);
});Tables
messages- Message historygroups- Group metadatachatPermissions- Per-chat permissionspermissionAuditLog- Permission change history
Slack
slackMessages- Slack message historyslackChannels- Channel metadataslackChannelPermissions- Per-channel permissionsslackPermissionAuditLog- Permission change history
Shared
dashboardUsers- Admin dashboard userssystemPrompts- Custom system prompts per chatscheduledMessages- Cron-scheduled messageswebhookForwards- Webhook forwarding rules
Development
# Build
pnpm build
# Run tests
pnpm test
# Generate migrations
pnpm db:generate
# Run migrations
pnpm db:migrate
# Open Drizzle Studio
pnpm db:studioEnvironment Variables
DATABASE_URL- PostgreSQL connection stringTEST_DATABASE_URL- Test database connection (for E2E tests)
