Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@picgo/store

Molunerfinn2.7kMIT2.1.0TypeScript support: included

For PicGo projects to write & read data or configuration in disk.

readme

PicGo/store

For PicGo projects to write & read data or configuration in disk.

Coverage Status PicGo Convention

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 .get(filter?: IFilter)

  • 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 .insert<T>(value: T)

  • 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 .insertMany<T>(value: T[])

  • 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 .updateById(id: string, value: IObject)

  • 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 .getById(id: string)

  • return: Promise<IObject | undefined>
  • interface: IObject

To get an item by id.

async () => {
  const result = await db.getById('xxx')
  console.log(result) // undefined
}

RemoveById .removeById(id: string);

  • return: Promise<void>

To remove an item by id.

async () => {
  const result = await db.removeById('xxx')
  console.log(result) // undefined
}

Overwrite .overwrite<T>(value: T[]) (v2.0.0)

  • 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 .updateMany(list: IObject[]) (v2.1.0)

  • 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

MIT

Copyright (c) 2020 Molunerfinn

changelog

:tada: 2.1.0 (2023-09-10)

:sparkles: Features

  • add updateMany api for DBStore (0775f19)

:tada: 2.0.4 (2022-08-21)

:bug: Bug Fixes

:package: Chore

  • upgrade rollup build options (b92a3e8)

:tada: 2.0.3 (2022-08-20)

:bug: Bug Fixes

  • comment-json broken case (477aaec)

:tada: 2.0.2 (2022-07-31)

:package: Chore

  • change JSONAdapter write file func (145ca3b)

:tada: 2.0.1 (2022-06-12)

:sparkles: Features

:bug: Bug Fixes

  • github action build error (b4fe0ac)

:tada: 2.0.0 (2022-06-11)

:sparkles: Features

  • add overwrite for DBStore && update lowdb version (ebd28d9)

:tada: 1.0.4 (2022-06-11)

:bug: Bug Fixes

  • gzip data read error will cause DBStore crash (01df844)

:tada: 1.0.3 (2021-08-01)

:bug: Bug Fixes

  • reverse will change data self (bcb32bd)

:tada: 1.0.2 (2021-08-01)

:sparkles: Features

:tada: 1.0.1 (2021-07-31)

:sparkles: Features

  • find with key to improve performance (e6b93a6)

:tada: 1.0.0 (2021-07-31)

:sparkles: Features

  • add key when insert an item (fa94e6c)

:package: Chore

:tada: 1.0.0-alpha.3 (2021-04-04)

:package: Chore

:tada: 1.0.0-alpha.2 (2021-04-04)

:bug: Bug Fixes

:tada: 1.0.0-alpha.1 (2021-04-04)

:bug: Bug Fixes

:tada: 1.0.0-alpha.0 (2021-04-04)

:sparkles: Features

:bug: Bug Fixes

:package: Chore

:pencil: Documentation