Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/comonadd/idb-query
IDB querying library
https://github.com/comonadd/idb-query
database idb javascript typescript
Last synced: 9 days ago
JSON representation
IDB querying library
- Host: GitHub
- URL: https://github.com/comonadd/idb-query
- Owner: comonadd
- Created: 2021-09-21T12:39:52.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2021-09-30T14:14:58.000Z (about 3 years ago)
- Last Synced: 2024-10-08T06:13:07.698Z (about 1 month ago)
- Topics: database, idb, javascript, typescript
- Language: TypeScript
- Homepage:
- Size: 150 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simple TypeScript IDB wrapper
## Examples:
### Create an Article entity
```typescript
import { createIDBEntity } from "idb-orm";
// create your own database
const db = createDb();interface IArticle {
author: string;
string: string;
text: string;
tags: string[];
}
const Student = createIDBEntity(
db, // need to provide database handle
"students", // store name
"id" // keyPath
);
```### New entity
```typescript
Student.create({
author: "John Smith";
title: "Ut aliquet facilisis turpis",
text: ` Amet bibendum euismod, leo diam interdum ligula, eu scelerisque sem
purus in tellus.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sit amet nunc id
quam porta varius. Ut aliquet facilisis turpis. Etiam pellentesque quam et
erat. Praesent suscipit justo.
`;
created: new Date(),
tags: ["stuff", "life", "cats"],
})
```### Queries
```typescript
// Get all articles that
Student.query()
.byIndex("created")
// had been posted in the range from 1st september of 2013
.from(new Date("2013-09-01"))
// to 1st september of 2014
.to(new Date("2014-09-01"))
// that were about cars
.filter((art) => art.tags.find("cars"))
// then group by month
.groupBy(
(art) =>
new Date(
art.created.getFullYear(), //
art.created.getMonth()
)
)
// take only the first 10 months
.take(10)
.all();
```More usage examples can be found in the [tests](./test) directory.