New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

drizzle-toolbelt

Package Overview
Dependencies
Maintainers
0
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

drizzle-toolbelt

Set of tools for drizzle-orm.

  • 1.2.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
105
increased by110%
Maintainers
0
Weekly downloads
 
Created
Source

Drizzle Toolbelt

Set of tools for drizzle-orm.

Installation

npm i drizzle-toolbelt

Usage

takeFirst

Takes first element from array if it exists.

import { db } from "./db";
import { users } from "./schema";
import { takeFirst } from "drizzle-toolbelt";


const firstUserOrUndefined = await db.select().from(users)
 .then(takeFirst);

takeFirstOrThrow

Takes first element from array or throws if length is zero.

With default error

import { db } from "./db";
import { users } from "./schema";
import { takeFirstOrThrow } from "drizzle-toolbelt";

const firstUserOrThrowDefault = await db
  .select()
  .from(users)
  // throw inline
  .then(takeFirstOrThrow());

// or

// prepare errors
const takeFirstOrError = takeFirstOrThrow();
const takeFirstOrUnauthorized = takeFirstOrThrow(new UnauthorizedError("You cannot view this page."));

// and pass it
const firstUserOrThrow = await db
  .select()
  .from(users)
  .then(takeFirstOrError);

const firstUserOrUnauthorized = await db
  .select()
  .from(users)
  .then(takeFirstOrUnauthorized);

aggregate

Aggregates rows from a query.

Example:

import { db } from "./db";
import { users } from "./schema";
import { aggregate } from "drizzle-toolbelt";

const usersWithPosts = await db.select({
  id: users.id,
  post: posts
}).from(users)
.leftJoin(posts.id, eq(posts.author_id, users.id))
.then(aggregate({ pkey: 'id', fields: { posts: 'post.id' } }));

This will:

  • group all users by their id (pkey)
  • remove the post property from the rows
  • aggregate all posts in the property posts (set in fields) by their id (posts.id)

The final type will be:

type Aggregated = {
  id: number;
  // `post` was removed
  // `posts` was added as an array of `post`
  posts: { id: number, …otherPostProperties }[]; 
}
Data-first

You may choose to pass rows in the arguments to call aggregate in a stand-alone way.

import { db } from "./db";
import { users } from "./schema";
import { aggregate } from "drizzle-toolbelt";

const usersRows = await db.select({
  id: users.id,
  post: posts
}).from(users)
.leftJoin(posts.id, eq(posts.author_id, users.id))

const usersWithPosts = aggregate({ rows, pkey: 'id', fields: { posts: 'post.id' }});

## Contributing

This project is open to contributions. Feel free to open an issue or a pull request.

License

MIT

Keywords

FAQs

Package last updated on 30 Jun 2024

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