mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
Hello airbnb
This commit is contained in:
1 parent
f9468536de
commit
8c195661d7
78 files changed
+2032
-1471
No files matched your search
+15
-82
@@ -1,42 +1,43 @@
|
||||
const
|
||||
db = require('../service/db.js'),
|
||||
coll = db.collection('system');
|
||||
const db = require('../service/db.js');
|
||||
|
||||
const coll = db.collection('system');
|
||||
|
||||
async function get(_id) {
|
||||
let doc = await coll.findOne({ _id });
|
||||
const doc = await coll.findOne({ _id });
|
||||
if (doc) return doc.value;
|
||||
return null;
|
||||
}
|
||||
async function update(_id, update, config) {
|
||||
await coll.findOneAndUpdate({ _id }, update, config);
|
||||
return this.get(_id);
|
||||
return get(_id);
|
||||
}
|
||||
/**
|
||||
* Increments the user counter.
|
||||
* @returns {number} Integer value after increment.
|
||||
*/
|
||||
async function incUserCounter() {
|
||||
return await this.update('userCounter', { $inc: { value: 1 } }, { upsert: true });
|
||||
function incUserCounter() {
|
||||
return update('userCounter', { $inc: { value: 1 } }, { upsert: true });
|
||||
}
|
||||
/**
|
||||
* Increments the problem ID counter.
|
||||
* @returns {number} Integer value before increment.
|
||||
*/
|
||||
async function incPidCounter() {
|
||||
return await this.update('userCounter', { $inc: { value: 1 } }, { upsert: true });
|
||||
function incPidCounter() {
|
||||
return update('userCounter', { $inc: { value: 1 } }, { upsert: true });
|
||||
}
|
||||
async function acquireLock(name) {
|
||||
let value = Math.floor(Math.random() * 0xFFFFFFFF);
|
||||
const value = Math.floor(Math.random() * 0xFFFFFFFF);
|
||||
try {
|
||||
await coll.updateOne({ _id: 'lock_' + name, value: 0 }, { $set: { value } }, { upsert: true });
|
||||
await coll.updateOne({ _id: `lock_${name}`, value: 0 }, { $set: { value } }, { upsert: true });
|
||||
} catch (e) { return null; }
|
||||
return value;
|
||||
}
|
||||
async function releaseLock(name, value) {
|
||||
let result = await coll.updateOne({ _id: 'lock_' + name, value }, { $set: { value: 0 } });
|
||||
const result = await coll.updateOne({ _id: `lock_${name}`, value }, { $set: { value: 0 } });
|
||||
return !!result.matchedCount;
|
||||
}
|
||||
async function releaseLockAnyway(name) {
|
||||
await coll.updateOne({ _id: 'lock_' + name }, { $set: { value: 0 } });
|
||||
await coll.updateOne({ _id: `lock_${name}` }, { $set: { value: 0 } });
|
||||
return true;
|
||||
}
|
||||
module.exports = {
|
||||
@@ -46,73 +47,5 @@ module.exports = {
|
||||
incUserCounter,
|
||||
acquireLock,
|
||||
releaseLock,
|
||||
releaseLockAnyway
|
||||
releaseLockAnyway,
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
EXPECTED_DB_VERSION = 1
|
||||
|
||||
|
||||
async def acquire_upgrade_lock():
|
||||
lock = await acquire_lock('upgrade')
|
||||
if not lock:
|
||||
raise error.UpgradeLockAcquireError()
|
||||
return lock
|
||||
|
||||
|
||||
async def release_upgrade_lock(lock: int):
|
||||
success = await release_lock('upgrade', lock)
|
||||
if not success:
|
||||
raise error.UpgradeLockReleaseError()
|
||||
return True
|
||||
|
||||
|
||||
@argmethod.wrap
|
||||
async def release_upgrade_lock_anyway():
|
||||
return await release_lock_anyway('upgrade')
|
||||
|
||||
|
||||
@argmethod.wrap
|
||||
async def get_db_version():
|
||||
coll = db.coll('system')
|
||||
doc = await coll.find_one({'_id': 'db_version'})
|
||||
if doc is None:
|
||||
return 0
|
||||
else:
|
||||
return doc['value']
|
||||
|
||||
|
||||
async def set_db_version(version: int):
|
||||
coll = db.coll('system')
|
||||
result = await coll.update_one(filter={'_id': 'db_version'},
|
||||
update={'$set': {'value': version}},
|
||||
upsert=True)
|
||||
return result.modified_count
|
||||
|
||||
|
||||
async def ensure_db_version(allowed_version=None):
|
||||
if allowed_version is None:
|
||||
allowed_version = EXPECTED_DB_VERSION
|
||||
current_version = await get_db_version()
|
||||
if current_version != allowed_version:
|
||||
raise error.DatabaseVersionMismatchError(current_version, allowed_version)
|
||||
|
||||
|
||||
@argmethod.wrap
|
||||
async def setup():
|
||||
"""
|
||||
Set up for fresh install
|
||||
"""
|
||||
coll = db.coll('system')
|
||||
fdoc = await coll.find_one({'_id': 'user_counter'})
|
||||
if fdoc:
|
||||
# skip if not fresh install
|
||||
return
|
||||
await set_db_version(EXPECTED_DB_VERSION)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
argmethod.invoke_by_args()
|
||||
|
||||
*/
|
||||
Reference in new issue
Block a user