Package Exports
- brackets-drizzle-db
- brackets-drizzle-db/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (brackets-drizzle-db) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
brackets-drizzle-db
This implementation of the CrudInterface
uses Drizzle ORM to store the data in a PostgreSQL database.
Installation
pnpm add brackets-drizzle-dbUsage
Basic Setup
import { SqlDatabase, createDatabase } from 'brackets-drizzle-db';
import { BracketsManager } from 'brackets-manager';
// Create the Drizzle database instance
const db = createDatabase(process.env.DATABASE_URL!);
const storage = new SqlDatabase(db);
const manager = new BracketsManager(storage);Integrating with Your Drizzle Schema
If you already have a Drizzle project, you can import the schema definitions and include them in your own schema:
// In your drizzle schema file
import * as bracketsSchema from 'brackets-drizzle-db';
// Export alongside your own schema
export * from './your-tables';
export { bracketsSchema };Then in your drizzle config, make sure to include the brackets schema:
// drizzle.config.ts
import { defineConfig } from 'drizzle-kit';
export default defineConfig({
schema: ['./src/db/schema.ts', './node_modules/brackets-drizzle-db/dist/db/schema/index.js'],
out: './drizzle',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});Using with an Existing Drizzle Instance
If you already have a Drizzle database instance:
import { SqlDatabase } from 'brackets-drizzle-db';
import { BracketsManager } from 'brackets-manager';
import { db } from './your-db-setup';
const storage = new SqlDatabase(db);
const manager = new BracketsManager(storage);Example with Custom Match Data
import { SqlDatabase, createDatabase } from 'brackets-drizzle-db';
import { BracketsManager } from 'brackets-manager';
import type { Match } from 'brackets-model';
type MatchWithWeather = Match & {
// The schema defines a JSON column named `extra` in the `Match` and `MatchGame` tables.
// Anything you put in the `extra` object will be stored in that column.
extra: {
weather: 'sunny' | 'rainy' | 'cloudy' | 'snowy';
};
};
const db = createDatabase(process.env.DATABASE_URL!);
const storage = new SqlDatabase(db);
const manager = new BracketsManager(storage);
const stage = await manager.create.stage({
tournamentId: 1,
name: 'Example',
type: 'single_elimination',
seeding: [
{ name: 'Team 1' },
{ name: 'Team 2' },
{ name: 'Team 3' },
{ name: 'Team 4' },
],
});
const currentMatches = await manager.get.currentMatches(stage.id);
await manager.update.match<MatchWithWeather>({
id: currentMatches[0].id,
opponent1: { score: 6, result: 'win' },
opponent2: { score: 3, result: 'loss' },
extra: {
weather: 'sunny',
},
});Schema
The package exports all Drizzle schema definitions for use in your project:
import {
// Tables
participant,
stage,
stageSettings,
group,
round,
match,
matchGame,
participantMatchResult,
participantMatchGameResult,
// Enums
stageTypeEnum,
grandFinalTypeEnum,
roundRobinModeEnum,
seedOrderingEnum,
matchResultEnum,
matchStatusEnum,
} from 'brackets-drizzle-db';