For PicGo projects to write & read data or configuration in disk.
Coverage Status PicGo Convention
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 // } }
For now, @picgo/store has two export member: DBStore & JSONStore.
new DBStore(dbPath: string, collectionName: string)
const db = new DBStore('picgo.db', 'uploadImgs')
- 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: [{...}] } }
- 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 // } }
- 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 // }] }
- 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 }
- return:
Promise<IObject | undefined> - interface: IObject
To get an item by id.
async () => { const result = await db.getById('xxx') console.log(result) // undefined }
- return:
Promise<void>
To remove an item by id.
async () => { const result = await db.removeById('xxx') console.log(result) // undefined }
- 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 // }] }
- 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 } }
Copyright (c) 2020 Molunerfinn