catalog-backend: tweak Context API
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
+1
-1
@@ -19,7 +19,7 @@ import { Context, ContextKey } from './types';
|
||||
/**
|
||||
* A base Context implementation that does not hold any value.
|
||||
*/
|
||||
export class BaseContext implements Context {
|
||||
export class BackgroundContext implements Context {
|
||||
getContextValue<T>(key: ContextKey<T>): T {
|
||||
return key.defaultValue;
|
||||
}
|
||||
@@ -14,15 +14,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { BaseContext } from './BaseContext';
|
||||
import { Context, ContextKey } from './types';
|
||||
|
||||
/**
|
||||
* A Context implementation that holds a single value, optionally extending an existing context.
|
||||
*/
|
||||
export class ContextWithValue implements Context {
|
||||
static create(key: ContextKey<unknown>, value: unknown, parent?: Context) {
|
||||
return new ContextWithValue(parent ?? new BaseContext(), key, value);
|
||||
static create(parent: Context, key: ContextKey<unknown>, value: unknown) {
|
||||
return new ContextWithValue(parent, key, value);
|
||||
}
|
||||
|
||||
private constructor(
|
||||
|
||||
+5
-5
@@ -23,14 +23,14 @@ const transactionContextKey = new ContextKey<Knex.Transaction | undefined>(
|
||||
);
|
||||
|
||||
/**
|
||||
* TransactionContext handles the wrapping of a knex transaction in a Context.
|
||||
* TransactionValue handles the wrapping of a knex transaction in a Context.
|
||||
*/
|
||||
export class TransactionContext {
|
||||
static create(tx: Knex.Transaction, parent?: Context) {
|
||||
return ContextWithValue.create(transactionContextKey, tx, parent);
|
||||
export class TransactionValue {
|
||||
static in(parent: Context, tx: Knex.Transaction) {
|
||||
return ContextWithValue.create(parent, transactionContextKey, tx);
|
||||
}
|
||||
|
||||
static getTransaction(context: Context): Knex.Transaction {
|
||||
static from(context: Context): Knex.Transaction {
|
||||
const transaction = context.getContextValue(transactionContextKey);
|
||||
if (!transaction) {
|
||||
throw new Error(`No transaction available in context`);
|
||||
@@ -14,8 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export { BaseContext } from './BaseContext';
|
||||
export { BackgroundContext } from './BackgroundContext';
|
||||
export { ContextWithValue } from './ContextWithValue';
|
||||
export { TransactionContext } from './TransactionContext';
|
||||
export { TransactionValue } from './TransactionValue';
|
||||
export { ContextKey } from './types';
|
||||
export type { Context } from './types';
|
||||
|
||||
Reference in New Issue
Block a user