A lightweight Gitlab based JSON database with Mongo-style API. Backed by gitbeaker and mingo.
npm i gitlab-db
importGitlabDBfrom'gitlab-db'// Instantiate a databaseconstdb=newGitlabDB('apple',{url: 'http://gitlab.example.com',token: 'your_access_token',repo: 'group/repo',})// Create a collectiondb.createCollection('product')// CRUDdb.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
Note: As all APIs returns a promise. I highly recommend the async/await statement like the following:
constresult=awaitdb.collection('product').save({name: 'iphone',v: '8',price: 699})Instantiate a database.
- dbName:
StringName of the database you want to create. - options:
Object- url:
StringSpecify gitlab url, eg:http://gitlab.example.com. - token:
StringSpecify your personal access token. - repo:
StringSpecify repository name and group belongs to, format:group/repo. - branch:
StringOptional, specify branch, default:main.
- url:
- customGitlabAPI:
ConstructorSpecify your custom GitlabAPI like@gitbeaker/browser.
Create a collection.
- collectionName:
StringName of the collection you want to create. - documents:
ArrayOptional. Specifies default data of the collection about to be created.
Connect to a collection.
- collectionName:
StringName of the collection you want to connect. - options:
ObjectOptional settings.- key:
StringSpecify a key of the collection.
- key:
Inserts a new document(or multiple documents). This method will returns the inserted document(s).
- document:
Object|ArrayA 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.
Selects documents in a collection.
- query:
ObjectOptional. 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, ... }]Modifies an existing document or documents in a collection.
- query:
ObjectThe selection criteria for the update. The same query selectors as in the find() method are available. - update:
ObjectThe 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}},])Removes documents from a collection.
- query:
ObjectSpecifies deletion criteria using query operators.
Returns like:
{removed: 1}Check if a collection exists.
- collectionName:
StringName of the collection you want to check.
Returns like:
trueimport{Gitlab}from'@gitbeaker/browser';importGitlabDBfrom'gitlab-db'// Instantiate a databaseconstdb=newGitlabDB('apple',{url: 'http://gitlab.example.com',token: 'your_access_token',repo: 'group/repo',},Gitlab)// ETC...- model check
- collection deletion
Config your environment variables GITLAB_URLACCESS_TOKENREPO, and run tests with:
GITLAB_URL={your_gitlab_url} ACCESS_TOKEN={your_access_token} REPO={yourGroup/yourRepo} npm run test