@cowris/kycdb-client
v2.0.5
Published
This is a Prisma Client package for the Cowris PostgreSQL KYCDB. It provides a simple interface to interact with the user's KYC reords such as verification sessions and status, allowing you to perform CRUD operations on user kyc data and relared tables.
Readme
@cowris/kycdb-client
A Prisma Client package for the Cowris PostgreSQL KYCDB.
Description
This package provides a centralized Prisma client for the Cowris PostgreSQL KYCDB. It simplifies database access and ensures consistency by sharing the Prisma configuration and client instance. It offers a simple interface to interact with user KYC records such as verification sessions, documents, and personal data, allowing you to perform CRUD operations on KYC-related tables.
Installation
npm install @cowris/kycdb-clientUsage
Import the Prisma Client:
JavaScript
const prisma = require('@cowris/kycdb-client');
async function main() {
const sessions = await prisma.verificationSession.findMany();
console.log(sessions);
}
main()
.catch((e) => {
throw e;
})
.finally(async () => {
await prisma.$disconnect();
});Ensure Database Connection
Make sure the microservice has the KYC_DATABASE_URL environment variable set, pointing to the PostgreSQL database.
Setup the database in microservice
Add this under scripts in package.json of the microservice:
"setup-prisma:kycdb": "node node_modules/@cowris/kycdb-client/scripts/migrate.js || echo 'Migration failed. Please install the cowris kycdb client. Run `npm install @cowris/kycdb-client` to install it.'"File Structure
@cowris/kycdb-client/
├── prisma/
│ ├── migrations/
│ ├── schema/
│ │ ├── session.prisma
│ │ ├── personData.prisma
│ │ ├── personDoc.prisma
│ │ └── schema.prisma // Main schema file
│ └── .env
├── node_modules/
├── package.json
├── package-lock.json
├── index.js
└── scripts/
└── migrate.jsprisma/schema/: Contains individual Prisma model files and the mainschema.prismafile that combines them.prisma/migrations/: Stores Prisma migration files (if used).prisma/.env: Holds the database connection string (DATABASE_URL).index.js: Exports the Prisma client instance.
Schema Definition
The Prisma schema is defined in the prisma/schema directory. Each model has its own .prisma file, and schema.prisma imports and combines them.
Example verificationSession.prisma
model VerificationSession {
id String @id @default(uuid())
status String @default("created")
verification_session_id String @unique
verification_session_url String
vendorData String
verification_session_token String
person_data PersonData?
documents PersonDoc[]
created_at DateTime @default(now()) @map("created_at")
updated_at DateTime @updatedAt @map("updated_at")
expires_at DateTime
}Example personDoc.prisma
model PersonDoc {
id String @id @default(uuid())
document_type String
document_id_number String
country String
image_url String
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
verification_id String
session VerificationSession @relation(fields: [verification_id], references: [id])
}Example personData.prisma
model PersonData {
id String @id @default(uuid())
firstname String
lastname String
phone String
address String
gender String
id_number String
date_of_birth String
verification_id String @unique
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
session VerificationSession @relation(fields: [verification_id], references: [id])
}Updating the Schema
Modify Model Files
Make changes to the relevant .prisma files in the prisma/schema directory.
Generate Prisma Client
Run the following command in the package's root directory:
npx prisma generatePublish a New Version
- Update the package version in
package.json. - Publish the updated package to your private npm registry:
npm publish --access restrictedUpdate in Microservices
Update the package in each microservice:
npm update @cowris/kycdb-clientSecurity Considerations
- Database Credentials: Do not hardcode database credentials. Use environment variables or secure credential management systems.
- Private Registry: Ensure your private npm registry is secure.
Contributing
Contributions are welcome. Please follow the standard pull request process.
License
MIT License
Repository
Bugs
Homepage
