Code Monkey home page Code Monkey logo

gitlab-db's Introduction

gitlab-db

A lightweight Gitlab based JSON database with Mongo-style API. Backed by gitbreaker and mingo.

NPM version Downloads

Install

npm i gitlab-db

Quick Start

import GitlabDB from 'gitlab-db'

// Instantiate a database
const db = new GitlabDB('apple', {
  url: 'http://gitlab.example.com',
  token: 'your_access_token',
  repo: 'group/repo',
})

// Create a collection
db.createCollection('product')

// CRUD
db.collection('product').save({ name: 'iphone', v: '8', price: 699 })
db.collection('product').find({ name: 'iphone' })
db.collection('product').update({ name: 'iphone', v: '8' }, { price: 599 })
db.collection('product').remove({ name: 'iphone', v: '7' })

Repository structure will be:

└── <repository root>
    ├── apple
    │   └── product.json

API

Note: As all APIs returns a promise. I highly recommend the async/await statement like the following:

const result = await db.collection('product').save({ name: 'iphone', v: '8', price: 699 })

constructor(dbName, options[, customGitlabAPI])

Instantiate a database.

  • dbName: String Name of the database you want to create.
  • options: Object
    • url: String Specify gitlab url, eg: http://gitlab.example.com.
    • token: String Specify your personal access token.
    • repo: String Specify repository name and group belongs to, format: group/repo.
    • branch: String Optional, specify branch, default: main.
  • customGitlabAPI: Constructor Specify your custom GitlabAPI like @gitbeaker/browser.

db.createCollection(collectionName [, documents])

Create a collection.

  • collectionName: String Name of the collection you want to create.
  • documents: Array Optional. Specifies default data of the collection about to be created.

db.collection(collectionName [, options])

Connect to a collection.

  • collectionName: String Name of the collection you want to connect.
  • options: Object Optional settings.
    • key: String Specify a key of the collection.

db.collection(collectionName).save(document)

Inserts a new document(or multiple documents). This method will returns the inserted document(s).

  • document: Object | Array A document or multiple documents to save to the collection.

Returns like:

Insert single document:

{ added: 1, document: {...} }

Insert multiple documents:

{ added: 2, documents: [{...}, {...}] }

Note: it will return { added: 0 } if a key is specified and the document that the key points to already exists.

db.collection(collectionName).find([query])

Selects documents in a collection.

  • query: Object Optional. Specifies selection filter using query operators. To return all documents in a collection, omit this parameter or pass an empty document ({}).

Returns like:

[{ _id: 1, ... }]

db.collection(collectionName).update(query, update)

Modifies an existing document or documents in a collection.

  • query: Object The selection criteria for the update. The same query selectors as in the find() method are available.
  • update: Object The modifications to apply.

Returns like:

{ updated: 2 }

Another usage, execute multiple updates at once to reduce gitlab requests:

db.collection(collectionName).update([
    { query: { id: 1 }, update: { v: 1 } },
    { query: { id: 2 }, update: { v: 2 } },
])

db.collection(collectionName).remove(query)

Removes documents from a collection.

  • query: Object Specifies deletion criteria using query operators.

Returns like:

{ removed: 1 }

db.isCollectionExists(collectionName)

Check if a collection exists.

  • collectionName: String Name of the collection you want to check.

Returns like:

true

Use in Browser

import { Gitlab } from '@gitbeaker/browser'; 
import GitlabDB from 'gitlab-db'

// Instantiate a database
const db = new GitlabDB('apple', {
  url: 'http://gitlab.example.com',
  token: 'your_access_token',
  repo: 'group/repo',
}, Gitlab)

// ETC...

Next

  • model check
  • collection deletion

Test

Config your environment variables GITLAB_URL ACCESS_TOKEN REPO, and run tests with:

GITLAB_URL={your_gitlab_url} ACCESS_TOKEN={your_access_token} REPO={yourGroup/yourRepo} npm run test

gitlab-db's People

Contributors

superraytin avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.