Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

moleculer-db-adapter-prisma

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moleculer-db-adapter-prisma

Prisma adapter for Moleculer DB service

  • 0.1.23
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
183
decreased by-3.17%
Maintainers
1
Weekly downloads
 
Created
Source

Moleculer logo

moleculer-db-adapter-prisma NPM version Unit tests Integration tests

SQL adapter for Moleculer DB service with Prisma.

Features

Install

$ npm install moleculer-db-adapter-prisma prisma --save

Usage

Define schema in project root

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DB_CONNECTION_URL")
}

model Post {
  id        String   @id @default(uuid()) @db.VarChar(36)
  title     String   @db.VarChar(255)
  content   String?
  votes     Int
  status    Boolean
  createdAt DateTime @default(now())
}

Generate client

prisma generate

Do not forget sync DB structure: Schema prototyping

Write service

"use strict";

const { ServiceBroker } = require("moleculer");
const DbService = require("moleculer-db");
const PrismaAdapter = require("moleculer-db-adapter-prisma");

const broker = new ServiceBroker();

broker.createService({
  name: "posts",
  mixins: [DbService],
  adapter: new PrismaAdapter(),
  model: "post", // Model name in camelCase
});

broker.start()
// Create a new post
.then(() => broker.call("posts.create", {
  title: "My first post",
  votes: 0,
  status: true,
}))

// Get all posts
.then(() => broker.call("posts.find").then(console.log));

Raw queries

actions: {
  findHello2() {
    return this.adapter.db
      .query("SELECT * FROM posts WHERE title = 'Hello 2' LIMIT 1")
      .then(console.log);
  }
}

Soft delete

  1. Add deletedAt field to model
model Post {
  id        String   @id @default(uuid()) @db.VarChar(36)
  title     String   @db.VarChar(255)
  content   String?
  votes     Int
  status    Boolean
  createdAt DateTime @default(now())
  deletedAt DateTime? @db.DateTime()
}
  1. Define adapter with enableSoftDelete flag:
broker.createService({
  name: "posts",
  mixins: [DbService],
  adapter: new PrismaAdapter({ enableSoftDelete: true }),
  model: "post", // Model name in camelCase
});
  1. Next all 'deletion' methods will set deletedAt = now(). Get and find methods will filter by deletedAt IS NULL

Run example

  1. Up local DB instance in docker
docker run --name prisma_demo -e MYSQL_PASSWORD=password -e MYSQL_USER=user -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=prisma -p 3306:3306 -d mysql:8.0.23 --default-authentication-plugin=mysql_native_password
  1. Sync DB structure and generate client
npm run prisma:push
npm run prisma:gen
  1. Run example script
npm run dev

Test

$ npm test

In development with watching

$ npm run ci

License

The project is available under the MIT license.

Contact

Copyright (c) 2016-2022 MoleculerJS

@moleculerjs @MoleculerJS

Keywords

FAQs

Package last updated on 17 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc