Files
Autonomous-Bug-Explorer/dist/modules/crawling/infrastructure/repositories/KyselyStateRepository.js

73 lines
2.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.KyselyStateRepository = void 0;
const CrawlState_1 = require("../../domain/entities/CrawlState");
const UniqueId_1 = require("../../../../shared/domain/UniqueId");
class KyselyStateRepository {
constructor(db) {
this.db = db;
}
async save(state) {
const row = {
id: state.id.toString(),
session_id: state.sessionId,
url: state.url,
title: state.title,
dom_snapshot_path: null,
visit_count: state.visitCount,
discovered_at: Date.now(),
};
await this.db
.insertInto('states')
.values(row)
.execute();
}
async findById(id) {
const row = await this.db
.selectFrom('states')
.selectAll()
.where('id', '=', id.toString())
.executeTakeFirst();
if (!row)
return null;
return this.toDomain(row);
}
async findAll() {
const rows = await this.db
.selectFrom('states')
.selectAll()
.execute();
return rows.map((row) => this.toDomain(row));
}
async findBySessionId(sessionId) {
const rows = await this.db
.selectFrom('states')
.selectAll()
.where('session_id', '=', sessionId)
.execute();
return rows.map((row) => this.toDomain(row));
}
async update(state) {
await this.db
.updateTable('states')
.set({
visit_count: state.visitCount,
url: state.url,
title: state.title,
})
.where('id', '=', state.id.toString())
.execute();
}
toDomain(row) {
return CrawlState_1.CrawlState.create({
url: row.url,
title: row.title,
domSnapshot: '',
visitCount: row.visit_count,
stateId: row.id,
sessionId: row.session_id,
}, UniqueId_1.UniqueId.from(row.id));
}
}
exports.KyselyStateRepository = KyselyStateRepository;