Skip to content

Commit

Permalink
Merge pull request #57 from moneymanagerex/new_models-9
Browse files Browse the repository at this point in the history
Add Field, FieldContent into insertSampleData
  • Loading branch information
georgeef authored Sep 27, 2024
2 parents dec1924 + 796f365 commit 37fe9f7
Show file tree
Hide file tree
Showing 19 changed files with 97 additions and 67 deletions.
2 changes: 1 addition & 1 deletion MMEX/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ struct ContentView: View {
} else {
print("Unable to access file at URL: \(url)")
}
let repository = dataManager.getRepository()
let repository = dataManager.repository
if let tables = Bundle.main.url(forResource: "tables.sql", withExtension: "") {
repository.execute(url: tables)
if isSampleDocument { repository.insertSampleData() }
Expand Down
46 changes: 24 additions & 22 deletions MMEX/DatabaseManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -88,26 +88,28 @@ class DataManager: ObservableObject {
print("Database connection closed.")
}

func getRepository() -> Repository { Repository(db: db) }
func getInfotableRepository() -> InfotableRepository { InfotableRepository(db: db) }
func getCurrencyRepository() -> CurrencyRepository { CurrencyRepository(db: db) }
func getCurrencyHistoryRepository() -> CurrencyRepository { CurrencyRepository(db: db) }
func getAccountRepository() -> AccountRepository { AccountRepository(db: db) }
func getAssetRepository() -> AssetRepository { AssetRepository(db: db) }
func getStockRepository() -> StockRepository { StockRepository(db: db) }
func getStockHistoryRepository() -> StockRepository { StockRepository(db: db) }
func getCategoryRepository() -> CategoryRepository { CategoryRepository(db: db) }
func getPayeeRepository() -> PayeeRepository { PayeeRepository(db: db) }
func getTransactionRepository() -> TransactionRepository { TransactionRepository(db: db) }
func getTransactionSplitRepository() -> TransactionSplitRepository { TransactionSplitRepository(db: db) }
func getTransactionLinkRepository() -> TransactionLinkRepository { TransactionLinkRepository(db: db) }
func getTransactionShareRepository() -> TransactionShareRepository { TransactionShareRepository(db: db) }
func getScheduledRepository() -> ScheduledRepository { ScheduledRepository(db: db) }
func getScheduledSplitRepository() -> ScheduledSplitRepository { ScheduledSplitRepository(db: db) }
func getTagRepository() -> TagRepository { TagRepository(db: db) }
func getTagLinkRepository() -> TagLinkRepository { TagLinkRepository(db: db) }
func getAttachmentRepository() -> AttachmentRepository { AttachmentRepository(db: db) }
func getBudgetYearRepository() -> BudgetYearRepository { BudgetYearRepository(db: db) }
func getBudgetTableRepository() -> BudgetTableRepository { BudgetTableRepository(db: db) }
func getReportRepository() -> ReportRepository { ReportRepository(db: db) }
var repository : Repository { Repository(db: db) }
var infotableRepository : InfotableRepository { InfotableRepository(db: db) }
var currencyRepository : CurrencyRepository { CurrencyRepository(db: db) }
var currencyHistoryRepository : CurrencyRepository { CurrencyRepository(db: db) }
var accountRepository : AccountRepository { AccountRepository(db: db) }
var assetRepository : AssetRepository { AssetRepository(db: db) }
var stockRepository : StockRepository { StockRepository(db: db) }
var stockHistoryRepository : StockRepository { StockRepository(db: db) }
var categoryRepository : CategoryRepository { CategoryRepository(db: db) }
var payeeRepository : PayeeRepository { PayeeRepository(db: db) }
var transactionRepository : TransactionRepository { TransactionRepository(db: db) }
var transactionSplitRepository : TransactionSplitRepository { TransactionSplitRepository(db: db) }
var transactionLinkRepository : TransactionLinkRepository { TransactionLinkRepository(db: db) }
var transactionShareRepository : TransactionShareRepository { TransactionShareRepository(db: db) }
var scheduledRepository : ScheduledRepository { ScheduledRepository(db: db) }
var scheduledSplitRepository : ScheduledSplitRepository { ScheduledSplitRepository(db: db) }
var tagRepository : TagRepository { TagRepository(db: db) }
var tagLinkRepository : TagLinkRepository { TagLinkRepository(db: db) }
var fieldRepository : FieldRepository { FieldRepository(db: db) }
var fieldContentRepository : FieldContentRepository { FieldContentRepository(db: db) }
var attachmentRepository : AttachmentRepository { AttachmentRepository(db: db) }
var budgetYearRepository : BudgetYearRepository { BudgetYearRepository(db: db) }
var budgetTableRepository : BudgetTableRepository { BudgetTableRepository(db: db) }
var reportRepository : ReportRepository { ReportRepository(db: db) }
}
28 changes: 28 additions & 0 deletions MMEX/Repositories/Repository.swift
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,34 @@ extension Repository {
}
}

var fieldMap: [Int64: Int64] = [:]
do {
let repo = FieldRepository(db: db)
repo.deleteAll()
for var data in FieldData.sampleData {
let id = data.id
repo.insert(&data)
fieldMap[id] = data.id
}
}

var fieldContentMap: [Int64: Int64] = [:]
do {
let repo = FieldContentRepository(db: db)
repo.deleteAll()
for var data in FieldContentData.sampleData {
let id = data.id
data.refId = switch data.refType {
case .transaction : transactionMap[data.refId] ?? data.refId
case .scheduled : scheduledMap[data.refId] ?? data.refId
default: data.refId
}
data.fieldId = fieldMap[data.fieldId] ?? data.fieldId
repo.insert(&data)
fieldContentMap[id] = data.id
}
}

var attachmentMap: [Int64: Int64] = [:]
do {
let repo = AttachmentRepository(db: db)
Expand Down
8 changes: 4 additions & 4 deletions MMEX/ViewModels/InfotableViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ class InfotableViewModel: ObservableObject {
init(dataManager: DataManager) {
self.dataManager = dataManager

self.infotableRepo = self.dataManager.getInfotableRepository()
self.transactionRepo = self.dataManager.getTransactionRepository()
self.accountRepo = self.dataManager.getAccountRepository()
self.currencyRepo = self.dataManager.getCurrencyRepository()
self.infotableRepo = self.dataManager.infotableRepository
self.transactionRepo = self.dataManager.transactionRepository
self.accountRepo = self.dataManager.accountRepository
self.currencyRepo = self.dataManager.currencyRepository
loadInfo()
setupBindings()
loadAccounts()
Expand Down
2 changes: 1 addition & 1 deletion MMEX/ViewModels/InsightsViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class InsightsViewModel: ObservableObject {
}

func loadTransactions() {
let repository = dataManager.getTransactionRepository()
let repository = dataManager.transactionRepository

// Fetch transactions asynchronously
DispatchQueue.global(qos: .background).async {
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Accounts/AccountDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ struct AccountDetailView: View {
}

func saveChanges() {
let repository = dataManager.getAccountRepository()
let repository = dataManager.accountRepository
if repository.update(account.data) {
// Successfully updated
} else {
Expand All @@ -116,7 +116,7 @@ struct AccountDetailView: View {
}

func deleteAccount() {
let repository = dataManager.getAccountRepository()
let repository = dataManager.accountRepository
if repository.delete(account.data) {
presentationMode.wrappedValue.dismiss()
} else {
Expand Down
6 changes: 3 additions & 3 deletions MMEX/Views/Accounts/AccountListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ struct AccountListView: View {
func loadAccounts() {
print("Loading payees in AccountListView...")

let repository = dataManager.getAccountRepository()
let repository = dataManager.accountRepository
DispatchQueue.global(qos: .background).async {
let loadedAccounts = repository.loadWithCurrency()
DispatchQueue.main.async {
Expand All @@ -109,7 +109,7 @@ struct AccountListView: View {
}

func loadCurrencies() {
let repo = dataManager.getCurrencyRepository()
let repo = dataManager.currencyRepository

DispatchQueue.global(qos: .background).async {
let loadedCurrencies = repo.load()
Expand All @@ -121,7 +121,7 @@ struct AccountListView: View {
}

func addAccount(account: inout AccountWithCurrency) {
let repository = dataManager.getAccountRepository()
let repository = dataManager.accountRepository
if repository.insert(&(account.data)) {
// self.accounts.append(account)
self.loadAccounts()
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Assets/AssetDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ struct AssetDetailView: View {
}

func saveChanges() {
let repository = dataManager.getAssetRepository() // pass URL here
let repository = dataManager.assetRepository // pass URL here
if repository.update(asset) {
// TODO
} else {
Expand All @@ -127,7 +127,7 @@ struct AssetDetailView: View {
}

func deleteAsset(){
let repository = dataManager.getAssetRepository() // pass URL here
let repository = dataManager.assetRepository // pass URL here
if repository.delete(asset) {
// Dismiss the AssetDetailView and go back to the previous view
presentationMode.wrappedValue.dismiss()
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Assets/AssetListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ struct AssetListView: View {

func loadAssets() {
// Fetch assets using repository and update the view
let repository = dataManager.getAssetRepository()
let repository = dataManager.assetRepository
DispatchQueue.global(qos: .background).async {
let loadedAssets = repository.load()
// Update UI on the main thread
Expand All @@ -66,7 +66,7 @@ struct AssetListView: View {

func addAsset(asset: inout AssetData) {
// TODO
let repository = dataManager.getAssetRepository()
let repository = dataManager.assetRepository
if repository.insert(&asset) {
self.assets.append(asset) // id is ready after repo call
// loadAssets()
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Categories/CategoryDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ struct CategoryDetailView: View {
}

func saveChanges() {
let repository = dataManager.getCategoryRepository()
let repository = dataManager.categoryRepository
if repository.update(category) {
// Handle success
} else {
Expand All @@ -99,7 +99,7 @@ struct CategoryDetailView: View {
}

func deleteCategory() {
let repository = dataManager.getCategoryRepository()
let repository = dataManager.categoryRepository
if repository.delete(category) {
// Dismiss the view and go back
presentationMode.wrappedValue.dismiss()
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Categories/CategoryListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ struct CategoryListView: View {
}

func loadCategories() {
let repository = dataManager.getCategoryRepository()
let repository = dataManager.categoryRepository
DispatchQueue.global(qos: .background).async {
let loadedCategories = repository.load()

Expand All @@ -64,7 +64,7 @@ struct CategoryListView: View {
}

func addCategory(category: inout CategoryData) {
let repository = dataManager.getCategoryRepository()
let repository = dataManager.categoryRepository
if repository.insert(&category) {
self.categories.append(category)
}
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Currencies/CurrencyDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ struct CurrencyDetailView: View {
}

func saveChanges() {
let repository = dataManager.getCurrencyRepository()
let repository = dataManager.currencyRepository
if repository.update(currency) {
// Handle success
} else {
Expand All @@ -78,7 +78,7 @@ struct CurrencyDetailView: View {
}

func deleteCurrency() {
let repository = dataManager.getCurrencyRepository()
let repository = dataManager.currencyRepository
if repository.delete(currency) {
presentationMode.wrappedValue.dismiss()
} else {
Expand Down
6 changes: 3 additions & 3 deletions MMEX/Views/Currencies/CurrencyListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,11 @@ struct CurrencyListView: View {

func loadCurrencies() {
// Fetch accounts using repository and update the view
let repository = dataManager.getCurrencyRepository()
let repository = dataManager.currencyRepository

DispatchQueue.global(qos: .background).async {
let loadedCurrencies = repository.load()
let loadedAccounts = dataManager.getAccountRepository().load()
let loadedAccounts = dataManager.accountRepository.load()

// Get a set of all currency IDs used by accounts
let usedCurrencyIds = Set(loadedAccounts.map { $0.currencyId })
Expand All @@ -115,7 +115,7 @@ struct CurrencyListView: View {
}

func addCurrency(_ currency: inout CurrencyData) {
let repository = dataManager.getCurrencyRepository()
let repository = dataManager.currencyRepository

if repository.insert(&currency) {
self.loadCurrencies()
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Payees/PayeeDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ struct PayeeDetailView: View {
}

func saveChanges() {
let repository = dataManager.getPayeeRepository() // pass URL here
let repository = dataManager.payeeRepository // pass URL here
if repository.update(payee) {
// TODO
} else {
Expand All @@ -130,7 +130,7 @@ struct PayeeDetailView: View {
}

func deletePayee(){
let repository = dataManager.getPayeeRepository() // pass URL here
let repository = dataManager.payeeRepository // pass URL here
if repository.delete(payee) {
// Dismiss the PayeeDetailView and go back to the previous view
presentationMode.wrappedValue.dismiss()
Expand Down
6 changes: 3 additions & 3 deletions MMEX/Views/Payees/PayeeListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ struct PayeeListView: View {
}

func loadPayees() {
let repository = dataManager.getPayeeRepository()
let repository = dataManager.payeeRepository
// Fetch accounts using repository and update the view
DispatchQueue.global(qos: .background).async {
let loadedPayees = repository.load()
Expand All @@ -68,7 +68,7 @@ struct PayeeListView: View {
}

func loadCategories() {
let repository = dataManager.getCategoryRepository()
let repository = dataManager.categoryRepository

DispatchQueue.global(qos: .background).async {
let loadedCategories = repository.load()
Expand All @@ -80,7 +80,7 @@ struct PayeeListView: View {
}

func addPayee(payee: inout PayeeData) {
let repository = dataManager.getPayeeRepository()
let repository = dataManager.payeeRepository
if repository.insert(&payee) {
self.payees.append(payee) // id is ready after repo call
// loadPayees()
Expand Down
10 changes: 5 additions & 5 deletions MMEX/Views/Transactions/TransactionAddView2.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ struct TransactionAddView2: View {
// TODO update category, payee associated?

// database level setting
let repository = dataManager.getInfotableRepository()
let repository = dataManager.infotableRepository
if let storedDefaultAccount = repository.getValue(for: InfoKey.defaultAccountID.id, as: Int64.self) {
newTxn.accountId = storedDefaultAccount
}
Expand All @@ -63,7 +63,7 @@ struct TransactionAddView2: View {
}

func addTransaction(txn: inout TransactionData) {
let repository = dataManager.getTransactionRepository()
let repository = dataManager.transactionRepository
if repository.insert(&txn) {
// id is ready after repo call
} else {
Expand All @@ -72,7 +72,7 @@ struct TransactionAddView2: View {
}

func loadPayees() {
let repository = dataManager.getPayeeRepository()
let repository = dataManager.payeeRepository

// Fetch accounts using repository and update the view
DispatchQueue.global(qos: .background).async {
Expand All @@ -86,7 +86,7 @@ struct TransactionAddView2: View {
}

func loadCategories() {
let repository = dataManager.getCategoryRepository()
let repository = dataManager.categoryRepository

DispatchQueue.global(qos: .background).async {
let loadedCategories = repository.load()
Expand All @@ -98,7 +98,7 @@ struct TransactionAddView2: View {
}

func loadAccounts() {
let repository = dataManager.getAccountRepository()
let repository = dataManager.accountRepository

DispatchQueue.global(qos: .background).async {
let loadedAccounts = repository.loadWithCurrency()
Expand Down
4 changes: 2 additions & 2 deletions MMEX/Views/Transactions/TransactionDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ struct TransactionDetailView: View {
account = accounts.first { $0.data.id == txn.accountId}
}
func saveChanges() {
let repository = dataManager.getTransactionRepository() // pass URL here
let repository = dataManager.transactionRepository // pass URL here
if repository.update(txn) {
// TODO
} else {
Expand All @@ -135,7 +135,7 @@ struct TransactionDetailView: View {
}

func deleteTxn(){
let repository = dataManager.getTransactionRepository() // pass URL here
let repository = dataManager.transactionRepository // pass URL here
if repository.delete(txn) {
// Dismiss the TransactionDetailView and go back to the previous view
presentationMode.wrappedValue.dismiss()
Expand Down
Loading

0 comments on commit 37fe9f7

Please sign in to comment.