Skip to content

TheMalaysiaMonadGroup/sherloque

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sherloque

What is Sherloque?

Sherloque is a language agnostic SQL SDK generator. Inspired by GraphqQL Code Generator

Why Sherloque?

You will want Sherloque if:

  1. You want to know if your SQL queries are correct without actually running it
  2. You want the return type of your SQL queries
  3. You don't want to use macros/template
  4. You want to write pure SQL

How it works?

You just need to provide 3 kind of files:

  1. Database schema (CREATE TABLE ...)
  2. SQL operations (SELECT/UPDATE/DELETE)
  3. Sherloque configuration

Example

  1. Database Schema
CREATE TABLE person (
  id    INT           NOT NULL,
  name  VARCHAR(255)  NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE pet (
  id        INT           NOT NULL,
  owner_id  INT           NOT NULL,
  kind      VARCHAR(255)  NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (owner_id) REFERENCES person(id)
);
  1. Database Operation (Note that variables are prefixed with $)
-- The name of this file: getUserPetsCount.sql
SELECT person.name, count(*) 
FROM person INNER JOIN pet 
  ON person.id = pet.owner_id
WHERE pet.kind = $petKind
GROUP BY person.id;
  1. Sherloque config
{
  "language": "typescript",
  "schemas": "./schema/**/*.sql",
  "operations": "./src/**/*.sql",
  "output": "./sdk.ts",
  "database": "mysql"
}
  1. Result (generated SDK)
export default class<T extends Database> {
  constructor(private db: T) {}
  getUserPetsCount(args: {petKind: string}): Promise<{     
    "person.name": string,
    "count(*)": number
  }[]> {
    // generated code
  }
}

How it is different from other libraries?

Library SQL Verification Pure SQL Support Language Agnostic Database Connection
Rust Diesel
SQLx
Sherloque

Why you might not want to use Sherloque

  1. It does not support SQL connection, it merely provide SDKs with properly typed functions that generate SQL queries.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages