Skip to content
This repository was archived by the owner on Jun 26, 2021. It is now read-only.

Commit

Permalink
WHERE wip
Browse files Browse the repository at this point in the history
  • Loading branch information
typeofweb committed Aug 2, 2019
1 parent eadab37 commit 7ae6789
Show file tree
Hide file tree
Showing 8 changed files with 329 additions and 219 deletions.
Empty file added index.d.ts
Empty file.
9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
"version": "1.0.0",
"description": "",
"main": "index.js",
"types": "index.d.ts",
"files": [
"lib/**/*"
"lib/**/*",
"index.d.ts"
],
"scripts": {
"build": "tsc",
"test": "jest",
"tslint": "tslint -p tsconfig.json"
"dtslint": "dtslint --onlyTestTsNext"
},
"keywords": [],
"author": "Michał Miszczyszyn <[email protected]> (https://typeofweb.com/)",
Expand All @@ -28,11 +30,12 @@
"typescript": "3.5.3"
},
"dependencies": {
"dtslint": "0.9.0",
"ramda": "0.26.1"
},
"husky": {
"hooks": {
"pre-commit": "npm run tslint && pretty-quick --staged"
"pre-commit": "npm run dtslint && pretty-quick --staged"
}
}
}
118 changes: 0 additions & 118 deletions src/alternative.ts

This file was deleted.

70 changes: 70 additions & 0 deletions src/index.test-d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// tslint:disable:no-magic-numbers
import pipe from 'ramda/es/pipe';
import { Column, ColumnMetaData, from, Model, Op, select, where } from './index';

type User = Model & {
columns: {
id: Column<'user.id', ColumnMetaData<User, 'TINYINT'>>;
age: Column<'user.age', ColumnMetaData<User, 'TEXT'>>;
};
};

const USER = {
name: 'user',
columns: {
age: { type: 'TEXT', notNull: true },
id: { type: 'TINYINT', notNull: true },
},
} as User;

type Invoice = Model & {
columns: {
id: Column<'invoice.id', ColumnMetaData<Invoice, 'TINYINT'>>;
age: Column<'invoice.age', ColumnMetaData<Invoice, 'TEXT'>>;
};
};

const INVOICE = {
name: 'invoice',
columns: {
id: { type: 'TINYINT', notNull: true },
age: { type: 'TEXT', notNull: true },
},
} as Invoice;

// $ExpectType () => Query<User, never, never, string>
const r1 = from(USER);

// $ExpectType <K2 extends string, ExistingColumns extends Column<K2, ColumnMetaData<User, any>>>(q: Query<User, ExistingColumns, never, string>) => Query<User, Column<"user.id", ColumnMetaData<User, any>> | ExistingColumns, never, string>
const r12 = select(USER.columns.id);

// $ExpectType Query<User, Column<"user.id", ColumnMetaData<User, any>>, never, string>
const r2 = select(USER.columns.id)(from(USER)());

// $ExpectType Query<User, Column<"user.age", ColumnMetaData<User, any>>, never, string>
const r2b = select(USER.columns.age)(from(USER)());

// $ExpectType Query<User, Column<"user.id", ColumnMetaData<User, any>> | Column<"user.age", ColumnMetaData<User, any>>, never, string>
const r3 = select(USER.columns.age)(select(USER.columns.id)(from(USER)()));

// $ExpectType () => Query<User, Column<"user.id", ColumnMetaData<User, any>> | Column<"user.age", ColumnMetaData<User, any>>, never, string>
const execute1 = pipe(
from(USER),
select(USER.columns.id),
select(USER.columns.age),
);

// $ExpectType () => Query<Invoice, Column<"invoice.id", ColumnMetaData<Invoice, any>> | Column<"invoice.age", ColumnMetaData<Invoice, any>>, never, string>
const execute2 = pipe(
from(INVOICE),
select(INVOICE.columns.id),
select(INVOICE.columns.age),
);

// $ExpectType () => Query<User, Column<string, Column<"user.id", ColumnMetaData<User, any>> | Column<"user.age", ColumnMetaData<User, any>>>, never, string>
const execute3 = pipe(
from(USER),
select(USER.columns.id),
select(USER.columns.age),
where([USER.columns.id, Op.$eq, 12]),
);
Loading

0 comments on commit 7ae6789

Please sign in to comment.