npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

postgraphile-plugin-json-patch

v1.0.2

Published

Postgraphile plugin for patch-like update functionality via Postgres procedures with JSON arguments

Downloads

2

Readme

postgraphile-plugin-json-patch

About

This plugin let's us leverage postgraphile's auto-generated patch types for use in postgres procedures that update data in views which are not updateable by default. Any view with complex logic (eg. JOINs) are not updateable, and therefore won't be included in postgraphile's default mutations.

When a @patch smart tag is included in a function or composite type definition, the type of the column/argument is replaced with the generated patch type of the specified view in the GraphQL schema. When the mutation is resolved, the incoming field for the argument are transformed back from the inflected name to the original column name. This allows the procedure logic to easily hydrate a view row.

Why?

For user-defined procedures that provide patch-like functionality to a view where an argument is of the json type, it is desirable to present the consumer of the GraphQL schema with a strongly-typed definition instead of an opaque JSON type.

This can be accomplished by extending the schema via makeExtendSchemaPlugin, but explicity defining input types, payload types, and mutation becomes cumbersome and result's in a lot of boilerplate code to maintain.

Usage

The smart tag definition is: @patch [argument/column id] [view id]

Example

create view public.entity ...
create view public.entity_children ...

create type public.entity_children_update (child_id uuid, child_patch json, ...)
comment on type public.entity_children_update is '@patch child_patch public.entity_children'

create function public.update_entity(id uuid, entity_patch json, update_children public.entity_children[]) ...
comment on function public.update_entity() is '@patch entity_patch public.entity'