@mwcp/paradedb
Version:
ParadeDb JavaScript Client Library Component for Midway.js
154 lines (113 loc) • 4.42 kB
Markdown
[]()
[](https://opensource.org/licenses/MIT)
[]()
[](https://github.com/waitingsong/paradedb/actions)
[](https://codecov.io/gh/waitingsong/paradedb)
[] is an Elasticsearch alternative built on Postgres.
We're modernizing the features of Elasticsearch's product suite,
starting with real-time search and analytics.
Test successfully with
- [Paradedb] v0.11
- [Paradedb] v0.12
- [Paradedb] v0.13
- [Paradedb] v0.14
| Package | Version |
| ---------------- | ---------------------- |
| [paradedb-js] | [![main-svg]][main-ch] |
| [@mwcp/paradedb] | [![cli-svg]][cli-ch] |
```sh
npm i paradedb
// OR
npm i @mwcp/paradedb
```
- Initialize ParadeDb instance
```ts
import { ParadeDb, type DbConnectionConfig } from 'paradedb'
const connection: DbConnectionConfig = {
host: process.env['PARADEDB_HOST'] ? process.env['PARADEDB_HOST'] : 'localhost',
port: process.env['PARADEDB_PORT'] ? +process.env['PARADEDB_PORT'] : 5432,
database: process.env['PARADEDB_DB'] ? process.env['PARADEDB_DB'] : 'postgres',
user: process.env['PARADEDB_USER'] ? process.env['PARADEDB_USER'] : 'postgres',
password: process.env['PARADEDB_PASSWORD'] ? process.env['PARADEDB_PASSWORD'] : 'password',
}
const pdb = new ParadeDb('master', { connection })
```
- [Create an Index]
```ts
const options: CreateBm25Options = {
indexName: 'search_idx',
tableName: 'mock_items',
keyField: 'id',
}
await pdb.index.createBm25(options)
```
[](https://github.com/waitingsong/paradedb/tree/main/packages/paradedb/test/lib/index-manager)
- [Drop an Index]
```ts
const options: DropBm25Options = {
indexName: 'search_idx',
}
await pdb.index.dropBm25(options)
```
- [Index Schema]
```ts
const rows: IndexSchemaDto[] = await idx.schema({ indexName: 'search_idx' })
assert(rows.length, 'Not found')
```
- [Index Size]
```ts
const size: bigint = await idx.size({ indexName: 'search_idx' })
// 0n means not found
```
- [Syntax of knex query builder]
- [FTS Examples]
Basic Usage:
```ts
const pdb = new ParadeDb('test', dbConfig)
const rows = await pdb.search<MockItemsDo>('mock_items')
.whereRaw(`description @@@ :k1`, { k1: 'keyboard' })
.orderBy('id', 'desc')
.limit(limit)
```
Update project `src/configuration.ts`
```ts
import { Configuration } from '@midwayjs/core'
import * as pdb from '@mwcp/paradedb'
@Configuration({
imports: [ pdb ],
importConfigs: [join(__dirname, 'config')],
})
export class ContainerConfiguration implements ILifeCycle {
}
```
[](https://github.com/waitingsong/paradedb/blob/main/packages/mwcp-paradedb/test/fixtures/base-app/src/paradedb-manager.ts#L29)
[](LICENSE)
- [English](README.md)
- [中文](README.zh-CN.md)
<br>
[]: https://github.com/waitingsong/paradedb/tree/main/packages/paradedb
[]: https://img.shields.io/npm/v/paradedb.svg?maxAge=300
[]: https://github.com/waitingsong/paradedb/tree/main/packages/paradedb/CHANGELOG.md
[@mwcp/paradedb]: https://github.com/waitingsong/paradedb/tree/main/packages/mwcp-paradedb
[]: https://img.shields.io/npm/v/@mwcp/paradedb.svg?maxAge=300
[]: https://github.com/waitingsong/paradedb/tree/main/packages/mwcp-paradedb/CHANGELOG.md
[]: https://midwayjs.org/
[]: https://www.paradedb.com/
[]: https://docs.paradedb.com/documentation/indexing/create_index
[]: https://docs.paradedb.com/documentation/indexing/delete_index
[]: https://docs.paradedb.com/documentation/indexing/inspect_index#index-schema
[]: https://docs.paradedb.com/documentation/indexing/inspect_index#index-size
[]: https://knexjs.org/guide/query-builder.html
[]: https://github.com/waitingsong/paradedb/tree/main/packages/paradedb/test/lib/fts