var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
export class TurnPersistenceService {
    constructor(getAdminforth, options) {
        this.getAdminforth = getAdminforth;
        this.options = options;
    }
    touchSession(sessionId) {
        return __awaiter(this, void 0, void 0, function* () {
            yield this.getAdminforth().resource(this.options.sessionResource.resourceId).update(sessionId, {
                [this.options.sessionResource.createdAtField]: new Date().toISOString(),
            });
        });
    }
    saveTurnResponse(input) {
        return __awaiter(this, void 0, void 0, function* () {
            const turnUpdates = {
                [this.options.turnResource.responseField]: input.responseText,
            };
            if (this.options.turnResource.debugField) {
                turnUpdates[this.options.turnResource.debugField] = input.debugHistory;
            }
            yield this.getAdminforth()
                .resource(this.options.turnResource.resourceId)
                .update(input.turnId, turnUpdates);
        });
    }
}
