@chevre/domain
Version:
Chevre Domain Library for Node.js
44 lines (43 loc) • 1.03 kB
TypeScript
import * as redis from 'redis';
export interface IOffer {
seatSection: string;
seatNumber: string;
}
export interface ILockKey {
eventId: string;
offers: IOffer[];
expires: Date;
holder: string;
}
/**
* 上映イベントに対する座席ごとの在庫状況を保管するリポジトリ
*/
export declare class RedisRepository {
static KEY_PREFIX: string;
readonly redisClient: redis.RedisClient;
constructor(redisClient: redis.RedisClient);
/**
* 座席をロックする
*/
lock(lockKey: ILockKey): Promise<void>;
/**
* 座席ロックを解除する
*/
unlock(params: {
eventId: string;
offer: IOffer;
}): Promise<void>;
/**
* 空席でない座席を検索する
*/
findUnavailableOffersByEventId(params: {
eventId: string;
}): Promise<IOffer[]>;
/**
* 保持者を取得する
*/
getHolder(params: {
eventId: string;
offer: IOffer;
}): Promise<string | null>;
}