Ben Ashton
3 years ago
1 changed files with 36 additions and 0 deletions
@ -0,0 +1,36 @@ |
|||||||
|
export function wrapAdapter(adapter) { |
||||||
|
const wrapped = {}; |
||||||
|
|
||||||
|
["name", "open", "close", "delete", "sql"].forEach((prop) => { |
||||||
|
if (!(prop in adapter)) { |
||||||
|
throw new PawSQLiteError(`Invalid adapter: missing property: ${ prop }`); |
||||||
|
} |
||||||
|
|
||||||
|
if ( |
||||||
|
prop === "name" && !( |
||||||
|
typeof adapter[prop] === "string" || |
||||||
|
adapter[prop] instanceof String |
||||||
|
) || |
||||||
|
prop !== "name" && ( |
||||||
|
typeof adapter[prop] !== "function" |
||||||
|
) |
||||||
|
) { |
||||||
|
throw new PawSQLiteError("Invalid adapter: invalid type for property: " + |
||||||
|
prop); |
||||||
|
} |
||||||
|
|
||||||
|
if (typeof adapter[prop] === "function") { |
||||||
|
wrapped[prop] = async (...args) => { |
||||||
|
try { |
||||||
|
return await adapter[prop](...args); |
||||||
|
} catch (err) { |
||||||
|
throw PawSQLiteError.from(err); |
||||||
|
} |
||||||
|
}; |
||||||
|
} else { |
||||||
|
wrapped[prop] = adapter[prop]; |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
return wrapped; |
||||||
|
} |
Loading…
Reference in new issue