mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-02 20:15:22 +02:00
CSV Imports Overhaul (Transactions, Trades, Accounts, and Mint import support) (#1209)
* Remove stale 1.0 import logic and model * Fresh start * Checkpoint before removing nav * First working prototype * Add trade, account, and mint import flows * Basic working version with tests * System tests for each import type * Clean up mappings flow * Clean up PR, refactor stale code, tests * Add back row validations * Row validations * Fix import job test * Fix import navigation * Fix mint import configuration form * Currency preset for new accounts
This commit is contained in:
parent
23786b444a
commit
398b246965
103 changed files with 2420 additions and 1689 deletions
28
db/migrate/20240921170426_change_import_owner.rb
Normal file
28
db/migrate/20240921170426_change_import_owner.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
class ChangeImportOwner < ActiveRecord::Migration[7.2]
|
||||
def up
|
||||
add_reference :imports, :family, foreign_key: true, type: :uuid
|
||||
add_column :imports, :original_account_id, :uuid
|
||||
|
||||
execute <<-SQL
|
||||
UPDATE imports
|
||||
SET family_id = (SELECT family_id FROM accounts WHERE accounts.id = imports.account_id),
|
||||
original_account_id = account_id
|
||||
SQL
|
||||
|
||||
remove_reference :imports, :account, foreign_key: true, type: :uuid
|
||||
change_column_null :imports, :family_id, false
|
||||
end
|
||||
|
||||
def down
|
||||
add_reference :imports, :account, foreign_key: true, type: :uuid
|
||||
|
||||
execute <<-SQL
|
||||
UPDATE imports
|
||||
SET account_id = original_account_id
|
||||
SQL
|
||||
|
||||
remove_reference :imports, :family, foreign_key: true, type: :uuid
|
||||
remove_column :imports, :original_account_id, :uuid
|
||||
change_column_null :imports, :account_id, false
|
||||
end
|
||||
end
|
55
db/migrate/20240925112218_add_import_types.rb
Normal file
55
db/migrate/20240925112218_add_import_types.rb
Normal file
|
@ -0,0 +1,55 @@
|
|||
class AddImportTypes < ActiveRecord::Migration[7.2]
|
||||
def change
|
||||
change_table :imports do |t|
|
||||
t.string :type, null: false
|
||||
t.string :date_col_label, default: "date"
|
||||
t.string :amount_col_label, default: "amount"
|
||||
t.string :name_col_label, default: "name"
|
||||
t.string :category_col_label, default: "category"
|
||||
t.string :tags_col_label, default: "tags"
|
||||
t.string :account_col_label, default: "account"
|
||||
t.string :qty_col_label, default: "qty"
|
||||
t.string :ticker_col_label, default: "ticker"
|
||||
t.string :price_col_label, default: "price"
|
||||
t.string :entity_type_col_label, default: "type"
|
||||
t.string :notes_col_label, default: "notes"
|
||||
t.string :currency_col_label, default: "currency"
|
||||
t.string :date_format, default: "%m/%d/%Y"
|
||||
t.string :signage_convention, default: "inflows_positive"
|
||||
t.string :error
|
||||
end
|
||||
|
||||
# Add import references so we can associate imported resources after the import
|
||||
add_reference :account_entries, :import, foreign_key: true, type: :uuid
|
||||
add_reference :accounts, :import, foreign_key: true, type: :uuid
|
||||
|
||||
create_table :import_rows, id: :uuid do |t|
|
||||
t.references :import, null: false, foreign_key: true, type: :uuid
|
||||
t.string :account
|
||||
t.string :date
|
||||
t.string :qty
|
||||
t.string :ticker
|
||||
t.string :price
|
||||
t.string :amount
|
||||
t.string :currency
|
||||
t.string :name
|
||||
t.string :category
|
||||
t.string :tags
|
||||
t.string :entity_type
|
||||
t.text :notes
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
create_table :import_mappings, id: :uuid do |t|
|
||||
t.string :type, null: false
|
||||
t.string :key
|
||||
t.string :value
|
||||
t.boolean :create_when_empty, default: true
|
||||
t.references :import, null: false, type: :uuid
|
||||
t.references :mappable, polymorphic: true, type: :uuid
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue