🌟 Refactor

- Moved mappings into Sb1 impl
- Moved Actual types to @common
- Moved createDirIfMissing to respective functions
- Refactored main into multiple functions
- Moved create db into Sb1impl and close
- Log requests on info
This commit is contained in:
2025-02-13 21:07:30 +01:00
parent 06cc89f762
commit 4367c24fb0
13 changed files with 178 additions and 118 deletions

66
packages/common/types.ts Normal file
View File

@ -0,0 +1,66 @@
import type { Dayjs } from "dayjs"
import type { UUID } from "node:crypto"
import type { TransactionEntity } from "@actual-app/api/@types/loot-core/types/models"
/**
* Defines how to interact with the bank
*/
export interface Bank {
/**
* Fetch all transactions in the specified days, from the given accounts
* @param interval Which days to fetch transactions for
* @param accountKeys The id of the accounts to fetch transactions from
* @returns An array of all transactions
*/
fetchTransactions: (
interval: Interval,
...accountKeys: ReadonlyArray<string>
) => Promise<ReadonlyArray<ActualTransaction>>
/**
* Shutdown resources
*/
shutdown: () => Promise<void> | void
}
export interface Interval {
fromDate: Dayjs
toDate: Dayjs
}
/**
* Describes how to interact with ActualBudget
*/
export interface Actual {
/**
* Import transactions following the rules defined in the ActualBudget instance
* If the transactions exists, it will be updated, or no change should be done.
* @param accountId The ActualBudget id to upload to
* @param transactions The transactions to import
* @returns An object describing what changed
*/
importTransactions: (
accountId: UUID,
transactions: Iterable<ActualTransaction>,
) => Promise<ImportTransactionsResponse>
/**
* Disconnect from ActualBudget and release resources
*/
shutdown: () => Promise<void>
}
export interface ActualTransaction extends TransactionEntity {
account: UUID
payee_name?: string
}
export interface ImportTransactionsResponse {
errors?: Message[]
added: number
updated: number
}
export interface Message {
message: string
}