Upgrade quickmongo: 3.0.2 → 4.0.0 (major)
Created by: depfu[bot]
Welcome to Depfu
This is one of the first three pull requests with dependency updates we've sent your way. We tried to start with a few easy patch-level updates. Hopefully your tests will pass and you can merge this pull request without too much risk. This should give you an idea how Depfu works in general.
After you merge your first pull request, we'll send you a few more. We'll never open more than seven PRs at the same time so you're not getting overwhelmed with updates.
Let us know if you have any questions. Thanks so much for giving Depfu a try!
Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request.
What changed?
✳ ️ quickmongo (3.0.2 → 4.0.0) · Repo
Release Notes
4.0.0
Updates
QuickMongo v4 is completely rewritten in TypeScript. v4 is completely different from what older versions looked like.
Breaking Changes
- QuickMongo no longer exports
Database
, instead it is a collection- Removed methods like
add
,subtract
,math
,divide
,multiply
,keyArray
,valueArray
,import
etc.- v4 only has 10 methods:
has
,get
,set
,delete
,push
,pull
,drop
,all
,latency
andexport
.- Implements the
Fields
logic, which is now required.- QuickMongo now works as a utility layer, adding key-value interface to existing mongodb collection
- Dot notations are no longer parsed from the key, instead it needs to be supplied separately as a parameter.
- Database states are no longer handled by QuickMongo.
- v4 is strongly typed, providing better experience to TypeScript users.
- It supports exporting the collection as raw json, in better form.
- v4 does implement the old data structure of quick.db, i.e.
{ ID: string; data: any; }
however, users must use Fields.Basic Example
const { Collection: MongoCollection, MongoClient } = require("mongodb"); const { Collection, Fields } = require("quickmongo");const mongo = new MongoClient("mongodb://localhost/quickmongo"); const schema = new Fields.ObjectField({ difficulty: new Fields.StringField(), items: new Fields.ArrayField(new Fields.StringField()), balance: new Fields.NumberField() });
mongo.connect() .then(() => { console.log("Connected to the database!"); doStuff(); });
async function doStuff() { const mongoCollection = mongo.db().collection("JSON");
<span class="pl-k">const</span> <span class="pl-s1">db</span> <span class="pl-c1">=</span> <span class="pl-k">new</span> <span class="pl-v">Collection</span><span class="pl-kos">(</span><span class="pl-s1">mongoCollection</span><span class="pl-kos">,</span> <span class="pl-s1">schema</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">set</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">difficulty</span>: <span class="pl-s">"Easy"</span><span class="pl-kos">,</span> <span class="pl-c1">items</span>: <span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-c1">balance</span>: <span class="pl-c1">0</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> { difficulty: 'Easy', items: [], balance: 0 }</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-s">"Sword"</span><span class="pl-kos">,</span> <span class="pl-s">"items"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> { difficulty: 'Easy', items: ['Sword'], balance: 0 }</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">add</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-c1">500</span><span class="pl-kos">,</span> <span class="pl-s">"balance"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> { difficulty: 'Easy', items: ['Sword'], balance: 500 }</span> <span class="pl-c">// Repeating previous examples:</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">push</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-s">"Watch"</span><span class="pl-kos">,</span> <span class="pl-s">"items"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">add</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-c1">500</span><span class="pl-kos">,</span> <span class="pl-s">"balance"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }</span> <span class="pl-c">// Fetching individual properties</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-s">"balance"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> 1000</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-s">"items"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> ['Sword', 'Watch']</span> <span class="pl-c">// remove item</span> <span class="pl-k">await</span> <span class="pl-s1">db</span><span class="pl-kos">.</span><span class="pl-en">pull</span><span class="pl-kos">(</span><span class="pl-s">"userInfo"</span><span class="pl-kos">,</span> <span class="pl-s">"Sword"</span><span class="pl-kos">,</span> <span class="pl-s">"items"</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// -> { difficulty: 'Easy', items: ['Watch'], balance: 1000 }</span>
}
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 41 commits:
Merge pull request #34 from DevSnowflake/v4
feat(collection): add export method
chore: bump dependencies
chore: update version
docs: update description
refactor(collection): make data structure compatible with old version
test(collection): add missing tests
feat(collection): add latency method
feat(collection): add pull method and corresponding tests
feat(collection): add push method and tests
docs: add description
Merge main branch to v4
docs: typedefs
docs: typedefs
ci: add docgen
docs: setup docgen
test(collection): add more test cases
feat(collection): add drop, all and tests
chore: prettied
refactor: better validation
test: use test instead of it
fix(collection): add error message
test: fix beforeAll
test: fix beforeAll
test: fix beforeAll
chore: tests
refactor: dot notation support
chore: prettier
test(fields): update imports
refactor: normalize filename
Merge branch 'v4' of https://github.com/DevSnowflake/quickmongo into v4
refactor: moved FieldModel & add test
feat: export everything
test: remove fields-typecheck for now
test: fields unit testing
test(Fields): add unit tests
refactor(*): refactor everything
refactor: fix eslint warns
refactor: using DevSnowflake/typescript-template
refactor: using DevSnowflake/typescript-template
refactor: initial
Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase
.
All Depfu comment commands
- @depfu rebase
- Rebases against your default branch and redoes this update
- @depfu recreate
- Recreates this PR, overwriting any edits that you've made to it
- @depfu merge
- Merges this PR once your tests are passing and conflicts are resolved
- @depfu close
- Closes this PR and deletes the branch
- @depfu reopen
- Restores the branch and reopens this PR (if it's closed)
- @depfu pause
- Ignores all future updates for this dependency and closes this PR
- @depfu pause [minor|major]
- Ignores all future minor/major updates for this dependency and closes this PR
- @depfu resume
- Future versions of this dependency will create PRs again (leaves this PR as is)