PicGo/store
For PicGo projects to write & read data or configuration in disk.
Usage
import { DBStore } from '@picgo/store'
const db = new DBStore('path/to/your/xxx.db', 'collectionName')
const main = async () => {
const result = await db.insert({
imgUrl: 'xxxx.jpg',
})
console.log(result)
// {
// id: 'xxxxx',
// imgUrl: 'xxx.jpg',
// createdAt: 123123123123,
// updatedAt: 123123123123
// }
}
API Reference
For now, @picgo/store
has two export member: DBStore
& JSONStore
.
DBStore
new DBStore(dbPath: string, collectionName: string)
const db = new DBStore('picgo.db', 'uploadImgs')
.get(filter?: IFilter)
Get - return:
Promise<IGetResult<IObject>[]>
- interface: IGetResult
To get the whole collection value.
async () => {
const collection = await db.get()
console.log(collection) // { total: x, data: [{...}, {...}, ...] }
}
To get filtered collection: (just like SQL orderBy
, limit
& offset
)
async () => {
const collection = await db.get({
orderBy: 'desc', // ['desc' | 'asc'] -> order with created-time
limit: 1, // limit >= 1
offset: 0, // offset >= 0
})
console.log(collection) // { total: 1, data: [{...}] }
}
.insert<T>(value: T)
Insert - return:
Promise<IResult<T>>
- interface: IResult
To insert an item to collection.
async () => {
const result = await db.insert({
imgUrl: 'https://xxxx.jpg'
})
console.log(result)
// {
// id: string,
// imgUrl: string,
// createdAt: number,
// updatedAt: number
// }
}
.insertMany<T>(value: T[])
InsertMany - return:
Promise<IResult<T>[]>
- interface: IResult
To insert multiple items to collection at once .
async () => {
const result = await db.insertMany([
{
imgUrl: 'https://xxxx.jpg'
},
{
imgUrl: 'https://yyyy.jpg'
}
])
console.log(result)
// [{
// id: string,
// imgUrl: string,
// createdAt: number,
// updatedAt: number
// },{
// id: string,
// imgUrl: string,
// createdAt: number,
// updatedAt: number
// }]
}
.updateById(id: string, value: IObject)
UpdateById - return:
Promise<boolean>
- interface: IObject
To update an item by id. It will return false
if the id does not exist.
async () => {
const result = await db.updateById('test-id', {
test: 123
})
console.log(result) // true
}
.getById(id: string)
GetById - return:
Promise<IObject | undefined>
- interface: IObject
To get an item by id.
async () => {
const result = await db.getById('xxx')
console.log(result) // undefined
}
.removeById(id: string)
;
RemoveById - return:
Promise<void>
To remove an item by id.
async () => {
const result = await db.removeById('xxx')
console.log(result) // undefined
}
.overwrite<T>(value: T[])
(v2.0.0)
Overwrite - return:
Promise<IResult<T>[]>
- interface: IResult
To overwrite whole collection:
async () => {
const result = await db.overwrite([
{
imgUrl: 'https://xxxx.jpg'
},
{
imgUrl: 'https://yyyy.jpg'
}
])
console.log(result)
// [{
// id: string,
// imgUrl: string,
// createdAt: number,
// updatedAt: number
// },{
// id: string,
// imgUrl: string,
// createdAt: number,
// updatedAt: number
// }]
}
.updateMany(list: IObject[])
(v2.1.0)
UpdateMany - return:
Promise<{ total: number, success: number }>
- interface: IObject
To update many items by id:
async () => {
const result = await db.updateMany([
{
id: 'xxx', // need to have id
imgUrl: 'https://xxxx.jpg'
},
{
id: 'yyy',
imgUrl: 'https://yyyy.jpg'
},
{
imgUrl: 'https://zzzz.jpg'
}
])
console.log(result)
// { total: 3, success: 2 }
}
License
Copyright (c) 2020 Molunerfinn