sqlx-ts 0.1.0-alpha.6

A tool for Javascript/Typescript for compile-time safe SQL queries
Documentation
<h1 align="center">SQLx-ts</h1>
<div align="center">
 <strong>
   🧰 The Typescript/Javascript SQL Toolkit
 </strong>
</div>

<br />

<div align="center">
Built to free Node developers from ORMs' unpredictably generated SQL queries
</div>

<br />

SQLx-ts is a CLI application featuring compile-time checked queries without a DSL and prevents broken SQL queries being run during runtime.

- **Compile time checked queries** - never ship a broken SQL query to production
- **Database Agnostic** - support for [PostgreSQL](http://postgresql.org/) and [MySQL](https://www.mysql.com/)
- **TypeScript and JavaScript** - supports for both [TypeScript](https://www.typescriptlang.org/) and JavaScript

<br>
<div align="center">
    <strong>
    📔 <a href="https://jasonshin.github.io/sqlx-ts/">Official Documentation</a>
    </strong>
</div>
<br>

### Installation

##### Install sqlx-ts npm module

If you are using npm
```bash
$ npm install sqlx-ts
```

If you are using yarn
```bash
$ yarn add sqlx-ts
```

And to use sqlx-ts in your code

In TypeScript based projects:

```typescript
import { sql } from 'sqlx-ts'

// ...
const query = sql`SELECT * FROM some_table;`
// ...
```


In Babel based projects:

```javascript
import { sql } from 'sqlx-ts'
const query = sql`SELECT * FROM some_table;`

// ... or

const { sql } = require('sqlx-ts')
const query = sql`SELECT * FROM some_table;`
```

##### Installing binary

The binary name for sqlx-ts is `sqlx-ts`.

[Archives of precompiled binaries of sqlx-ts are available for Windows, macOS and Linux](https://github.com/JasonShin/sqlx-ts/releases). Linux and Windows binaries are static executables. Users of platforms not explicitly mentioned below are advised to download one of these archives.

If you're a **macOS** user, then you can install sqlx-ts from via install.sh:

```bash
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --os macos
```

If you're a **Windows** user, then you can install sqlx-ts from via install.sh:

```bash
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --os win32
```

If you're a **Linux** user, then you can install sqlx-ts from via install.sh:

```bash
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --os linux
```

To install a specific artifact, [go to the release page to find the exact name of the artifact](https://github.com/JasonShin/sqlx-ts/releases)

```bash
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --artifact sqlx_ts_v0.1.0_x86_64-apple-darwin.tar.gz
```

Upgrading to a new version can be done by grabbing the next version of the sqlx-ts artifact and use `--force` command from install.sh

```bash
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --artifact sqlx_ts_v0.2.0_x86_64-apple-darwin.tar.gz --force
```

For more advanced usage, please check `--help` command of install.sh

```bash
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s --help
```

### Motivation

Rust's philosophy of guaranteed compile-time safety of your code has always inspired me. Rust is still new and many seasoned developers would view Rust's increased benefit/cost ratio claims are as yet unproven. However, there are lessons from these new technologies that we can bring back to our everyday languages such as JavaScript and TypeScript. [SQLx](https://github.com/launchbadge/sqlx) is a great example of this, although the idea isn't directly co-related to Rust, but its philosophy well-aligns with Rust's overall ecosystem.