Skip to content

codemix/ts-sql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

 โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„  โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„               โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„  โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„  โ–„
โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œ             โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–Œ
 โ–€โ–€โ–€โ–€โ–ˆโ–‘โ–ˆโ–€โ–€โ–€โ–€ โ–โ–‘โ–ˆโ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€              โ–โ–‘โ–ˆโ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€ โ–โ–‘โ–ˆโ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–ˆโ–‘โ–Œโ–โ–‘โ–Œ
     โ–โ–‘โ–Œ     โ–โ–‘โ–Œ                       โ–โ–‘โ–Œ          โ–โ–‘โ–Œ       โ–โ–‘โ–Œโ–โ–‘โ–Œ
     โ–โ–‘โ–Œ     โ–โ–‘โ–ˆโ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„  โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„ โ–โ–‘โ–ˆโ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„ โ–โ–‘โ–Œ       โ–โ–‘โ–Œโ–โ–‘โ–Œ
     โ–โ–‘โ–Œ     โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–Œ       โ–โ–‘โ–Œโ–โ–‘โ–Œ
     โ–โ–‘โ–Œ      โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–ˆโ–‘โ–Œ โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€  โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–ˆโ–‘โ–Œโ–โ–‘โ–ˆโ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–ˆโ–‘โ–Œโ–โ–‘โ–Œ
     โ–โ–‘โ–Œ               โ–โ–‘โ–Œ                       โ–โ–‘โ–Œโ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œโ–โ–‘โ–Œ
     โ–โ–‘โ–Œ      โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–ˆโ–‘โ–Œ              โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–ˆโ–‘โ–Œ โ–€โ–€โ–€โ–€โ–€โ–€โ–ˆโ–‘โ–ˆโ–€โ–€ โ–โ–‘โ–ˆโ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„
     โ–โ–‘โ–Œ     โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œ             โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œ        โ–โ–‘โ–Œ  โ–โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–Œ
      โ–€       โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€               โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€          โ–€    โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€

This is a SQL database implemented purely in TypeScript type annotations.
This means that it operates solely on types - you define a "database" (just a type annotation) and then query it using some more type annotations.

It supports a subset of SQL, including SELECT (with conditions and joins), INSERT, UPDATE and DELETE statements.

You can install ts-sql in your own project with npm install @codemix/ts-sql or yarn add @codemix/ts-sql (TypeScript 4.1 is required).

An example query looks like this:

import { Query } from "@codemix/ts-sql";

const db = {
  things: [
    { id: 1, name: "a", active: true },
    { id: 2, name: "b", active: false },
    { id: 3, name: "c", active: true },
  ],
} as const;

type ActiveThings = Query<
  "SELECT id, name AS nom FROM things WHERE active = true",
  typeof db
>;

// ActiveThings is now equal to the following type:
type Expected = [{ id: 1; nom: "a" }, { id: 3; nom: "c" }];

See the full demo on the TypeScript playground!

About

A SQL database implemented purely in TypeScript type annotations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors