https://github.com/ForbesLindesay/atdatabases
TypeScript clients for databases that prevent SQL Injection
https://github.com/ForbesLindesay/atdatabases
databases expo javascript mysql nodejs postgres promises sql sqlite typescript
Last synced: 22 days ago
JSON representation
TypeScript clients for databases that prevent SQL Injection
- Host: GitHub
- URL: https://github.com/ForbesLindesay/atdatabases
- Owner: ForbesLindesay
- License: mit
- Created: 2018-12-19T16:31:39.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-25T19:19:45.000Z (7 months ago)
- Last Synced: 2024-10-29T15:46:19.481Z (6 months ago)
- Topics: databases, expo, javascript, mysql, nodejs, postgres, promises, sql, sqlite, typescript
- Language: TypeScript
- Homepage: https://www.atdatabases.org
- Size: 3.08 MB
- Stars: 604
- Watchers: 6
- Forks: 47
- Open Issues: 61
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-nodejs - @databases - Query PostgreSQL, MySQL and SQLite3 with plain SQL without risking SQL injection.  (Repository / Database)
- awesome-nodejs - @databases - Query PostgreSQL, MySQL and SQLite3 with plain SQL without risking SQL injection. (Packages / Database)
- awesome-node - @databases - Query PostgreSQL, MySQL and SQLite3 with plain SQL without risking SQL injection. (Packages / Database)
- awesome-nodejs-cn - @databases - **star:617** 查询 PostgreSQL, MySQL 和 SQLite3 与普通SQL - 没有风险的SQL注入。 (包 / 数据库)
- awesome-nodejs-cn - @databases - 避免 SQL 注入风险的纯 SQL 查询方式,支持 PostgreSQL, MySQL 和 SQLite3 (包 / 数据库)
README
## Safe From HTML Injection
Using tagged template literals for queries, e.g.
```ts
db.query(sql`SELECT * FROM users WHERE id=${userID}`);
```makes it virtually impossible for SQL Injection attacks to slip in un-noticed. All the @databases libraries enforce the use of the sql tagged template literals, so you can't accidentally miss them.
The query is then passed to your database engine as a separate string and values:
```js
{text: 'SELECT * FROM users WHERE id=?', values: [userID]}
```## Promises
All the @databases APIs are designed with promises in mind from the get go.
## TypeScript
Written in TypeScript, so every module has type safety and type definitions built in.
## Modular
Each database driver is published to npm as a separate module, so you don't need to install the ones you don't need.
Package Name | Version | Docs
-------------|---------|------
@databases/bigquery | [](https://www.npmjs.com/package/@databases/bigquery) | [https://www.atdatabases.org/docs/bigquery](https://www.atdatabases.org/docs/bigquery)
@databases/cache | [](https://www.npmjs.com/package/@databases/cache) | [https://www.atdatabases.org/docs/cache](https://www.atdatabases.org/docs/cache)
@databases/connection-pool | [](https://www.npmjs.com/package/@databases/connection-pool) | [https://www.atdatabases.org/docs/connection-pool](https://www.atdatabases.org/docs/connection-pool)
@databases/dataloader | [](https://www.npmjs.com/package/@databases/dataloader) | [https://www.atdatabases.org/docs/dataloader](https://www.atdatabases.org/docs/dataloader)
@databases/escape-identifier | [](https://www.npmjs.com/package/@databases/escape-identifier) | [https://www.atdatabases.org/docs/escape-identifier](https://www.atdatabases.org/docs/escape-identifier)
@databases/expo | [](https://www.npmjs.com/package/@databases/expo) | [https://www.atdatabases.org/docs/websql](https://www.atdatabases.org/docs/websql)
@databases/lock | [](https://www.npmjs.com/package/@databases/lock) | [https://www.atdatabases.org/docs/lock](https://www.atdatabases.org/docs/lock)
@databases/mysql | [](https://www.npmjs.com/package/@databases/mysql) | [https://www.atdatabases.org/docs/mysql](https://www.atdatabases.org/docs/mysql)
@databases/mysql-test | [](https://www.npmjs.com/package/@databases/mysql-test) | [https://www.atdatabases.org/docs/mysql-test](https://www.atdatabases.org/docs/mysql-test)
@databases/mysql-typed | [](https://www.npmjs.com/package/@databases/mysql-typed) | [https://www.atdatabases.org/docs/mysql-typed](https://www.atdatabases.org/docs/mysql-typed)
@databases/pg | [](https://www.npmjs.com/package/@databases/pg) | [https://www.atdatabases.org/docs/pg](https://www.atdatabases.org/docs/pg)
@databases/pg-bulk | [](https://www.npmjs.com/package/@databases/pg-bulk) | [https://www.atdatabases.org/docs/pg-bulk](https://www.atdatabases.org/docs/pg-bulk)
@databases/pg-cluster | [](https://www.npmjs.com/package/@databases/pg-cluster) | [https://www.atdatabases.org/docs/pg-cluster](https://www.atdatabases.org/docs/pg-cluster)
@databases/pg-migrations | [](https://www.npmjs.com/package/@databases/pg-migrations) | [https://www.atdatabases.org/docs/pg-migrations](https://www.atdatabases.org/docs/pg-migrations)
@databases/pg-test | [](https://www.npmjs.com/package/@databases/pg-test) | [https://www.atdatabases.org/docs/pg-test](https://www.atdatabases.org/docs/pg-test)
@databases/pg-typed | [](https://www.npmjs.com/package/@databases/pg-typed) | [https://www.atdatabases.org/docs/pg-typed](https://www.atdatabases.org/docs/pg-typed)
@databases/queue | [](https://www.npmjs.com/package/@databases/queue) | [https://www.atdatabases.org/docs/queue](https://www.atdatabases.org/docs/queue)
@databases/split-sql-query | [](https://www.npmjs.com/package/@databases/split-sql-query) | [https://www.atdatabases.org/docs/split-sql-query](https://www.atdatabases.org/docs/split-sql-query)
@databases/sql | [](https://www.npmjs.com/package/@databases/sql) | [https://www.atdatabases.org/docs/sql](https://www.atdatabases.org/docs/sql)
@databases/sqlite | [](https://www.npmjs.com/package/@databases/sqlite) | [https://www.atdatabases.org/docs/sqlite](https://www.atdatabases.org/docs/sqlite)
@databases/sqlite-sync | [](https://www.npmjs.com/package/@databases/sqlite-sync) | [https://www.atdatabases.org/docs/sqlite-sync](https://www.atdatabases.org/docs/sqlite-sync)
@databases/validate-unicode | [](https://www.npmjs.com/package/@databases/validate-unicode) | [https://www.atdatabases.org/docs/validate-unicode](https://www.atdatabases.org/docs/validate-unicode)
@databases/websql | [](https://www.npmjs.com/package/@databases/websql) | [https://www.atdatabases.org/docs/websql](https://www.atdatabases.org/docs/websql)
@databases/migrations-base | [](https://www.npmjs.com/package/@databases/migrations-base) | Not documented yet
@databases/mock-db | [](https://www.npmjs.com/package/@databases/mock-db) | Not documented yet
@databases/mock-db-typed | [](https://www.npmjs.com/package/@databases/mock-db-typed) | Not documented yet
@databases/mysql-config | [](https://www.npmjs.com/package/@databases/mysql-config) | Not documented yet
@databases/mysql-schema-cli | [](https://www.npmjs.com/package/@databases/mysql-schema-cli) | Not documented yet
@databases/mysql-schema-introspect | [](https://www.npmjs.com/package/@databases/mysql-schema-introspect) | Not documented yet
@databases/mysql-schema-print-types | [](https://www.npmjs.com/package/@databases/mysql-schema-print-types) | Not documented yet
@databases/pg-config | [](https://www.npmjs.com/package/@databases/pg-config) | Not documented yet
@databases/pg-connection-string | [](https://www.npmjs.com/package/@databases/pg-connection-string) | Not documented yet
@databases/pg-create | [](https://www.npmjs.com/package/@databases/pg-create) | Not documented yet
@databases/pg-data-type-id | [](https://www.npmjs.com/package/@databases/pg-data-type-id) | Not documented yet
@databases/pg-errors | [](https://www.npmjs.com/package/@databases/pg-errors) | Not documented yet
@databases/pg-schema-cli | [](https://www.npmjs.com/package/@databases/pg-schema-cli) | Not documented yet
@databases/pg-schema-introspect | [](https://www.npmjs.com/package/@databases/pg-schema-introspect) | Not documented yet
@databases/pg-schema-print-types | [](https://www.npmjs.com/package/@databases/pg-schema-print-types) | Not documented yet
@databases/push-to-async-iterable | [](https://www.npmjs.com/package/@databases/push-to-async-iterable) | Not documented yet
@databases/shared | [](https://www.npmjs.com/package/@databases/shared) | Not documented yet
@databases/shared-print-types | [](https://www.npmjs.com/package/@databases/shared-print-types) | Not documented yet
@databases/websql-core | [](https://www.npmjs.com/package/@databases/websql-core) | Not documented yet
@databases/with-container | [](https://www.npmjs.com/package/@databases/with-container) | Not documented yet> Check out the website to learn more: https://www.atdatabases.org/