73 lines
2.1 KiB
JavaScript
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;
|