Registry / database / prisma-generator-postgres-realtime

prisma-generator-postgres-realtime

JSON →
library1.0.0jsnpmunverified

A Prisma generator (v1.0.0) that transforms your Postgres database into a realtime database by generating SQL migrations (triggers, functions, publication) and a type-safe Prisma client extension for subscribing to row-level changes. It integrates with Prisma's `$extends` pattern and node-postgres (`pg`) for LISTEN/NOTIFY. Unlike raw pg subscriptions or Supabase Realtime, this keeps everything inside Prisma's type system, generates migrations automatically, and supports per-model filtering via optional config. Release cadence: initial release, active development.

npm install prisma-generator-postgres-realtime
INSTALL
IMPORT
SIG · PRISMA-GENERATOR-P
P
prisma-generator-postgres-realtime
databasejavascriptv1.0.0
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

prismaRealtimeExtension
import { prismaRealtimeExtension } from './realtime/prismaExtension'
const prismaRealtimeExtension = require('./realtime/prismaExtension')
Generated file path may differ if custom outputDirPath is set in config
PrismaClient
import { PrismaClient } from '@prisma/client'
const PrismaClient = require('@prisma/client').PrismaClient
PrismaClient is the default export in @prisma/client
$subscribe
prisma.$subscribe(callback) or prisma.modelName.$subscribe(callback)
prisma.modelName.$subscribe({ callback })
$subscribe takes a callback function, not an options object. Options (connectionString, logLevel) are passed as second argument.

Shows full setup: schema generator config, generate+migrate command, and type-safe subscription usage with PrismaClient $extends.

// 1. Add generator to schema.prisma: // generator realtime { // provider = "prisma-generator-postgres-realtime" // generatorConfigPath = "../src/realtime/configs.js" // } // 2. Generate and migrate: // npx prisma generate // npx prisma migrate dev // 3. Use in code: import { PrismaClient } from '@prisma/client'; import { prismaRealtimeExtension } from './realtime/prismaExtension'; const prisma = new PrismaClient().$extends(prismaRealtimeExtension); prisma.$subscribe((event) => { console.log(`Operation ${event.operation} on ${event.model}`); }); // Subscribe to a specific model prisma.user.$subscribe((event) => { console.log('User changed:', event.newRow); }, { logLevel: 'all', connectionString: process.env.DATABASE_URL ?? '' });
Debug
Known issues
breakingRequired peer dependency 'pg' must be installed separately; not bundled.
fix
Run: npm install pg
affects: >=1.0.0
breakingThe generator creates new SQL migrations (triggers/functions) on each 'prisma generate'. Running on an existing database with migration history may conflict.
fix
Always run 'prisma migrate dev' after generation to apply new migrations; ensure no manual edits to generated migrations.
affects: >=1.0.0
gotchaThe generated prismaRealtimeStatus.json file tracks which migrations were added. Deleting it will cause regeneration, potentially duplicating migrations.
fix
Do not delete or ignore prismaRealtimeStatus.json; include it in version control.
affects: >=1.0.0
gotchaThe $subscribe callback receives an object with 'dbUser' property (Postgres role), which may contain sensitive information.
fix
Avoid logging entire event object in production; redact dbUser if necessary.
affects: >=1.0.0
deprecatedNo breaking changes recorded for v1.0.0; first stable release.
fix
N/A
affects: none
Errors
Common errors & fixes
Error: Cannot find module 'pg'
Missing peer dependency 'pg'.
fix
Install pg: npm install pg
Error: Unknown model 'User' for $subscribe
The model name does not exist in the Prisma schema or realtime generator config excludes it.
fix
Check schema.prisma for model name; if using includeModels/excludeModels in config, ensure the model is included.
PrismaClientValidationError: Invalid `prisma.$extends()` invocation: Expected an extension object or function
Trying to use $extends with the generated extension incorrectly (e.g., missing parentheses).
fix
Use: .$extends(prismaRealtimeExtension) — note the function call if applicable (check generated extension structure)
Upgrade
Version history
1.0.0latest on npm
Audit
Dependencies
pgrequiredRequired peer dependency for PostgreSQL LISTEN/NOTIFY connection
@prisma/clientrequiredRequired to extend Prisma Client with $subscribe methods
prismarequiredRequired at generation time to inspect schema and apply migrations
Agent activity
19 hits · last 30 days
node
14
Amazon
1
OpenAI (training)
1
Resources
prisma-generator-postgres-realtime — npm install prisma-generator-postgres-realtime · libregistry