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

@nexys/fetchr

v0.14.1

Published

[![Build and Test Package](https://github.com/nexys-system/fetch-r/actions/workflows/build.yml/badge.svg)](https://github.com/nexys-system/fetch-r/actions/workflows/build.yml) [![Publish](https://github.com/nexys-system/fetch-r/actions/workflows/publish.y

Downloads

583

Readme

Fetch-R

Build and Test Package Publish Deploy to docker NPM Version NPM Downloads Code style

Typescript ORM to connect to MySQL database

experimental support for PostgreSQL

Typescript port of Scala version

Get started with the package

Install

yarn add @nexys/fetchr

Use

import FetchR from "@nexys/fetchr";
import { Database } from "@nexys/fetchr/dist/database/type";
import { Entity } from "@nexys/fetchr/dist/type";

const model: Entity[] = [
  {
    name: "User",
    uuid: false,
    fields: [
      { name: "firstName", type: "String", optional: false },
      { name: "lastName", type: "String", optional: false },
      { name: "email", type: "String", optional: false },
    ],
  },
];

const dbConfig: Database = {
  username: "",
  host: "",
  password: "",
  database: "",
  port: 3306,
};

const fetchr = new FetchR(dbConfig, model);

fetchr.mutate({
  User: {
    insert: {
      data: { firstName: "john", lastName: "doe", email: "[email protected]" },
    },
  },
});

// get all users
fetchr.query({ User: {} });

// get all users' emails whose names are "john"
fetchr.query({
  User: { projection: { firstName: true }, filters: { firstName: "John" } },
});

Querying

There are 2 endpoints for querying: /data and /mutate. As their names suggests, the first one retrieves data and the second alters them. This is based on the same philosophy that was adopted by graphql.

Data

This is the query endpoint: /query (for legacy reason the endpoint /data is also available)

The querying language is very easy is straightforward and follows the structure defined here.

Note that the endpoint always returns an object with the different entities queries as keys and the result in the form of an array as values.

Query Example

  • get a list of user from the entity User
{User: {}}
  • get a list of user belonging to a particulart workspace
{User: {workspace:{id: workspaceId}}}

Mutate

Available through /mutate. The following actions are available

  • insert
  • update
  • delete

Model and Databases

The service supports multi models/databases

Models

  • Models can be set using /model/set
  • The strcuture is the one descrbied in /service/type
  • Models are stored in /assets/models.json

Databases

  • Models can be set using /database/set
  • The strcuture is the one descrbied in /service/database/type
  • Databases are stored in /assets/databases.json

When a query requiring a particular database is called, it will look for an associated connection pool. If none is found, it will create a new one based on the database record (if not found, an error is thrown) and store it in a Map object.

Migrations

The migration engines is largely inspired from flyway. An array of migrations can be passed; each having a unique combination of index and version (e.g. 2.1, 2.2 etc). Migrations are stored in a separate table with their checksum values.

GraphQL

GraphQL support is available. See https://github.com/nexys-system/server-boilerplate/blob/master/README.md#graphql-query-examples-tested-in-postman for more information