diff --git a/lib/notification/adapter/sqlite.js b/lib/notification/adapter/sqlite.js index 4291643c..12c40a20 100644 --- a/lib/notification/adapter/sqlite.js +++ b/lib/notification/adapter/sqlite.js @@ -1,7 +1,18 @@ import { markdown2Html } from '../../services/markdown.js'; import Database from 'better-sqlite3'; -export const send = ({ serviceName, newListings, jobKey }) => { - const db = new Database('db/listings.db'); +import path from 'path'; +import fs from 'fs'; + +export const send = ({ serviceName, newListings, jobKey, notificationConfig }) => { + const sqliteConfig = notificationConfig.find((adapter) => adapter.id === config.id); + const dbPath = sqliteConfig?.fields?.dbPath || 'db/listings.db'; + + const dbDir = path.dirname(dbPath); + if (!fs.existsSync(dbDir)) { + fs.mkdirSync(dbDir, { recursive: true }); + } + + const db = new Database(dbPath); const fields = [ 'serviceName', 'jobKey', @@ -30,8 +41,16 @@ export const send = ({ serviceName, newListings, jobKey }) => { }; export const config = { id: 'sqlite', - name: 'Sqlite', - description: 'This adapter stores listings in a local sqlite3 database.', - config: {}, + name: 'SQLite', + description: 'This adapter stores listings in a local SQLite 3 database.', + fields: { + dbPath: { + type: 'text', + label: 'Database Path', + description: + 'Path to the SQLite database file (e.g., db/listings.db). If not specified, defaults to db/listings.db', + placeholder: 'db/listings.db', + }, + }, readme: markdown2Html('lib/notification/adapter/sqlite.md'), }; diff --git a/lib/notification/adapter/sqlite.md b/lib/notification/adapter/sqlite.md index 6b455b51..bc9592f1 100644 --- a/lib/notification/adapter/sqlite.md +++ b/lib/notification/adapter/sqlite.md @@ -1,9 +1,9 @@ -### Sqlite Adapter +### SQLite Adapter -This adapter stores search results in a sqlite database located in db/listings.db. This file can be used for further analysis later on. +This adapter stores search results in an SQLite database. By default, the database is located at `db/listings.db`, but you can configure a custom location. This file can be used for further analysis later. -Fields are: +The database table contains the following columns (all stored as `TEXT` type): ``` -['serviceName', 'jobKey', 'id', 'size', 'rooms', 'price', 'address', 'title', 'link', 'description'] +['serviceName', 'jobKey', 'id', 'size', 'rooms', 'price', 'address', 'title', 'link', 'description', 'image'] ```