kfreelance-project-postgresql-prisma-2
v0.0.5
Published
Shared Prisma client library for microservices
Downloads
683
Maintainers
Readme
kfreelance-project-postgresql-prisma
A shared Prisma client library for microservices, providing a centralized database schema and ORM functionality.
Installation
npm install kfreelance-project-postgresql-prismaQuick Start
Basic Usage
import { PrismaClient } from 'kfreelance-project-postgresql-prisma';
const prisma = new PrismaClient();
async function main() {
// Create a user
const user = await prisma.user.create({
data: {
username: 'john_doe',
email: '[email protected]',
passwordHash: 'hashed_password_here',
is_active: true,
must_reset_password: false,
},
});
// Find all users
const users = await prisma.user.findMany();
console.log(users);
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (e) => {
console.error(e);
await prisma.$disconnect();
process.exit(1);
});Using Custom Database URL
import { createPrismaClient } from 'kfreelance-project-postgresql-prisma';
const prisma = createPrismaClient({
databaseUrl: 'postgresql://user:password@localhost:5432/mydb',
log: ['query', 'error'],
});Direct Client Import (Alternative)
import { PrismaClient } from 'kfreelance-project-postgresql-prisma/client';
const prisma = new PrismaClient();Environment Variables
Set the following environment variable in your microservice:
DATABASE_URL="postgresql://postgres:your_secure_password@localhost:5432/freelance_db?schema=public"Available Types
The library exports all Prisma-generated types:
import type { User, PasswordResetToken, Prisma } from 'kfreelance-project-postgresql-prisma';
// Use types for function parameters
function createUser(userData: Prisma.UserCreateInput): Promise<User> {
return prisma.user.create({ data: userData });
}Database Schema
The library includes the following models:
User
id: String (UUID)username: String (unique)email: String (unique)passwordHash: Stringis_active: Booleanmust_reset_password: Booleancreated_at: DateTimeupdated_at: DateTime
PasswordResetToken
id: String (UUID)user_id: String (foreign key to User)reset_token: String (hashed)expires_at: DateTimeused: Boolean
Utility Functions
createPrismaClient(options?)
Create a PrismaClient instance with custom configuration:
const prisma = createPrismaClient({
databaseUrl: 'your-custom-database-url',
log: ['query', 'info', 'warn', 'error'], // Optional logging
});getDefaultDatabaseUrl()
Get the default database URL (useful for debugging):
import { getDefaultDatabaseUrl } from 'kfreelance-project-postgresql-prisma';
console.log('Using database:', getDefaultDatabaseUrl());Development
If you're working on this library:
# Install dependencies
npm install
# Copy environment file
cp .env.example .env
# Generate Prisma client
npm run generate
# Build the library
npm run build
# Run development example
npm run devPublishing
To publish a new version:
# Build the library
npm run build
# Publish to npm
npm publish --access publicIntegration in Microservices
1. Install the library
npm install kfreelance-project-postgresql-prisma2. Set environment variables
# .env
DATABASE_URL="postgresql://postgres:password@localhost:5432/freelance_db?schema=public"3. Use in your microservice
import { PrismaClient, type User } from 'kfreelance-project-postgresql-prisma';
const prisma = new PrismaClient();
export class UserService {
async findUserById(id: string): Promise<User | null> {
return prisma.user.findUnique({ where: { id } });
}
async createUser(userData: {
username: string;
email: string;
passwordHash: string;
}): Promise<User> {
return prisma.user.create({
data: {
...userData,
is_active: true,
must_reset_password: false,
},
});
}
}Migration Notes
When the database schema changes:
- Update the Prisma schema in this library
- Generate new migrations
- Build and publish a new version
- Update the library version in your microservices
- Run database migrations
Support
For issues or questions about this library, please contact the platform team or create an issue in the repository.
