diff --git a/README.md b/README.md index eb230fb..0e76e85 100644 --- a/README.md +++ b/README.md @@ -7,5 +7,27 @@ ## Usage ```typescript -import { SQLConnector } from parch-connector-sql +import { SQLConnector } from 'parch-connector-sql'; + +const connector = new SQLConnector(models); + +connector.models +connector.model('user'); + +await connector.createRecord('user', { + email: 'foo@bar.com', + password: 'password' +}); + +await connector.destroyRecord('user', 1); + +await connector.findAll('user'); + +await connector.findOne('user', 1); + +await connector.queryRecord('user', { email: { $like: 'foo' }}); + +await connector.updateRecord('user', 1, { + firstName: 'foo' +}); ``` diff --git a/package.json b/package.json index a4c0f52..17d1964 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "commitmsg": "validate-commit-msg", "compile": "tsc -p .", "cover": "NODE_ENV=test nyc yarn test", - "lint": "tslint src/**/*.ts -p tsconfig.json", + "lint": "tslint src/**/*.ts -p tsconfig.json -t stylish", "precommit": "lint-staged", "prepare-release": "curl -sL https://gist.githubusercontent.com/dylanfoster/35b06db9aaa9237da77eff4a8eec0a22/raw/83ec714ec64f7ec36c5004588aa259354fc87b51/prepare-release.sh | bash -s", "prepublish": "yarn test && yarn compile", "pretest": "yarn compile", - "test": "NODE_ENV=test mocha --compilers ts:ts-node/register --recursive", + "test": "NODE_ENV=test mocha --require ts-node/register --recursive test/**/*.ts", "watch:compile": "chokidar 'src/**/*.ts' 'test/**/*.ts' -c 'yarn compile' --initial", "watch:cover": "chokidar 'src/**/*.ts' 'test/**/*.ts' -c 'yarn cover' --initial", "watch:test": "chokidar 'src/**' 'test/**' -c 'npm test' --initial" diff --git a/src/connector.ts b/src/connector.ts index ad04b5d..2d1ddc4 100644 --- a/src/connector.ts +++ b/src/connector.ts @@ -1,7 +1,41 @@ -// import { Connector } from 'parch-connector-base'; +export interface AnyModelInstance extends AnyObject {} -export interface Connector { +export interface AnyObject { + [key: string]: any; } -export class SQLConnector implements Connector { +export interface IDataTypes extends AnyObject {} + +export interface IModelDefinition extends AnyObject {} + +export interface IConnector { + createRecord(modelName: string, payload: AnyObject, options?: AnyObject): Promise; + define(DataTypes: IDataTypes): IModelDefinition | any; + defineClassMethods(): void; + defineInstanceMethods(): void; + destroyRecord(modelName: string, id: any, options?: AnyObject): Promise; + findAll(modelName: string, query: AnyObject, options?: AnyObject): Promise; + findOne(modelName: string, id: any, options?: AnyObject): Promise; + queryRecord(modelName: string, query: AnyObject, options?: any): Promise; + updateRecord(modelName: string, id: any, updates: AnyObject, options?: AnyObject): Promise; +} + +export class SQLConnector implements IConnector { + async createRecord(modelName, payload, options) {} + + define(DataTypes) {} + + defineClassMethods() {} + + defineInstanceMethods() {} + + async destroyRecord(modelName, id, options) {} + + async findAll(modelName, query, options) {} + + async findOne(modelName, id, options) {} + + async queryRecord(modelName, query, options) {} + + async updateRecord(modelName, id, updates, options) {} } diff --git a/tslint.json b/tslint.json index 61d0168..080c84e 100644 --- a/tslint.json +++ b/tslint.json @@ -1,6 +1,17 @@ { "extends": "tslint-config-airbnb", "rules": { - "trailing-comma": false + "max-line-length": { + "severity": "warning", + "options": 120 + }, + "trailing-comma": false, + "variable-name": [true, + "ban-keywords", + "check-format", + "allow-leading-underscore", + "allow-pascal-case", + "allow-trailing-underscore" + ] } }