# sqldown

> A sqlite3 implementation of the LevelDOWN API

Latest version **2.1.0** (published 2015-08-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install sqldown
pnpm add sqldown
yarn add sqldown
bun add sqldown
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2015-08-07 |
| First published | 2014-03-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 72 |
| Maintainers | cwmma |
| Keywords | leveldb, leveldown, levelup, sqlite |

## Links

- npm: https://www.npmjs.com/package/sqldown
- Repository: https://github.com/calvinmetcalf/sqldown
- Issues: https://github.com/calvinmetcalf/sqldown/issues
- npm.io page: https://npm.io/package/sqldown

## Dependencies (8)

- [knex](https://npm.io/package/knex.md) ^0.8.3
- [debug](https://npm.io/package/debug.md) ^2.2.0
- [es3ify](https://npm.io/package/es3ify.md) ^0.1.3
- [bluebird](https://npm.io/package/bluebird.md) ^2.3.11
- [inherits](https://npm.io/package/inherits.md) ^2.0.1
- [through2](https://npm.io/package/through2.md) ^0.6.3
- [abstract-leveldown](https://npm.io/package/abstract-leveldown.md) ^2.1.0
- [double-ended-queue](https://npm.io/package/double-ended-queue.md) ^2.0.0-0

## Recent versions

- 2.1.0 (latest) — 2015-08-07
- 2.0.1 — 2015-07-19
- 2.0.0 — 2015-05-15
- 1.2.0 — 2014-12-15
- 1.1.1 — 2014-08-20
- 1.1.0 — 2014-08-19
- 1.0.2 — 2014-08-11
- 1.0.0 — 2014-08-09
- 0.0.2 — 2014-06-16
- 0.0.1 — 2014-03-31

## README

SQLdown [![Build Status](https://travis-ci.org/calvinmetcalf/SQLdown.svg)](https://travis-ci.org/calvinmetcalf/SQLdown)
====

A levelup backend with knex (sqlite3, postgres, and mysql tested and websql possible).

```bash
npm install --save sqldown
```

Also it doesn't come with any of the database backends so you need to install those yourself, one of

```bash
npm install --save sqlite3
npm install --save pg pg-query-stream
npm install --save mysql
```

In node locations should be connection strings (e.g. `postgres://username:password@localhost/database`), if it doesn't start with a 'dbType://' it is assumed to be the path for a local sqlite3 database.  Table defaults to sqldown but can be overridden either by passing an `table` option or setting a query param (`pg://localhost/database?table=tablename`).

In the browser location will always be the table name.

Test setup and much else taken from [level-js](https://github.com/maxogden/level.js).

## Setup

To get around the fact that postgres does not feature upserts instead of a simple table with 2 columns, `key` and `value` with `key` being the primary and unique key, instead we have a more complex setup with 3 columns `id`, `key` and `value` with `id` being an auto-incremented integer. When we `get` we query for the value with the given key which has the highest id.

This could lead to much excess data if you were to update the same key a bunch so it's set to periodically (by default every 25 puts) clean up any entries that aren't the max id for a given key.

Databases that support indexes on arbitrarily long fields have the `key` field index.  If you know your keys or values are going to be shorter then a given length you may specify `keyLength` or `valueLength` option to limit it to that length, this is a prerequisite for mysql indexes.

---
_Source: https://npm.io/package/sqldown · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
