55 Commits

Author SHA1 Message Date
f99a866e13 feat: implement unified S3-compatible storage system
Consolidates storage backends into a single S3-compatible driver that supports:
- AWS S3 (native)
- Backblaze B2 (S3-compatible API)
- Cloudflare R2 (S3-compatible API)
- MinIO and other S3-compatible services
- Local filesystem for development

This replaces the previous separate B2 driver with a unified approach,
reducing dependencies and complexity while adding support for more services.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 23:07:44 +12:00
7c43726abf fix: correct WebSocket message logging format
- Change format specifier from %s to %+v for struct logging
- Resolve compilation error in WebSocket message handling
- Maintain proper logging functionality for debugging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:05:37 +12:00
b7ac4b0152 fix: add missing mock expectations in account tests
- Add GetSplitCountByAccountId mock expectations for CreateAccount tests
- Add GetSplitCountByAccountId mock expectations for UpdateAccount tests
- Resolve "unexpected method call" errors in account test suite
- Maintain existing test logic while fixing mock setup

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:05:21 +12:00
1b115fe0ff feat: add attachment methods to mock datastore
- Add InsertAttachment mock method for testing
- Add GetAttachment and GetAttachmentsByTransaction mock methods
- Add DeleteAttachment mock method for testing
- Maintain consistency with existing mock patterns

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:05:05 +12:00
a87df47231 feat: register attachment API routes
- Add 5 RESTful endpoints for transaction attachment management
- Include proper authentication middleware for all attachment operations
- Follow existing URL pattern: /orgs/:orgId/transactions/:transactionId/attachments
- Support nested resource access with proper authorization

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:04:50 +12:00
8b0a72c81f feat: implement attachment REST API endpoints
- Add POST /attachments for secure multi-file upload with validation
- Add GET /attachments for listing transaction attachments
- Add GET /attachments/:id for attachment metadata retrieval
- Add GET /attachments/:id/download for secure file download
- Add DELETE /attachments/:id for soft deletion
- Include comprehensive security validation: file type, size, content detection
- Implement proper error handling and cleanup on failures

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:04:32 +12:00
f64f83e66f feat: add attachment support to GORM model
- Implement AttachmentInterface methods in GormModel
- Add GetTransaction method for interface compliance
- Include placeholder implementation for future GORM repository development
- Maintain backward compatibility with existing GORM usage

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:04:15 +12:00
f5f0853040 feat: implement attachment business logic layer
- Add AttachmentInterface to main model interface
- Implement attachment CRUD operations with permission checking
- Add GetTransaction method for secure attachment access validation
- Add accountsContainReadAccess for permission verification
- Ensure users can only access attachments for authorized transactions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:04:01 +12:00
04653f2f02 feat: implement attachment database layer
- Add AttachmentInterface to main Datastore interface
- Implement CRUD operations for attachments following existing patterns
- Add proper SQL marshalling/unmarshalling with HEX/UNHEX for binary IDs
- Include soft deletion and proper indexing support

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:03:44 +12:00
3b89d8137e feat: add UUID utility functions for attachment system
- Add NewUUID() function for generating unique attachment identifiers
- Add IsValidUUID() function for validating UUID format in API requests
- Support 32-character hex string validation for secure file handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:03:30 +12:00
d10686e70f feat: add attachment model type definitions
- Add core attachment type with metadata fields for transaction files
- Add GORM model for attachment with proper relationships
- Include file information, upload timestamps, and soft deletion support

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:03:13 +12:00
b5ea2095e4 fix: update authentication layer for GORM repository integration
- Update auth.go to use new repository interfaces
- Fix test compilation errors in auth_test.go
- Maintain compatibility with existing authentication flows
- Update mock implementations for repository pattern

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 22:09:36 +12:00
f547d8d75b feat: integrate Viper for advanced configuration management
- Replace basic config loading with Viper framework
- Add support for multiple config sources (files, env vars, defaults)
- Add mapstructure tags for proper config binding
- Support JSON, YAML, and TOML config formats
- Add environment variable support with OA_ prefix
- Implement secure config loading with multiple search paths
- Maintain backward compatibility with existing config.json files

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 22:08:19 +12:00
0d1cb22044 refactor: update data access layer to use GORM repositories
- Replace SQL-based queries with GORM repository calls
- Update all model interfaces to use repository pattern
- Fix compilation errors in core/model/ files
- Update mocks to match new repository interfaces
- Modify API handlers to use new repository layer
- Maintain backward compatibility with existing interfaces

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 22:08:08 +12:00
bd3f101fb4 feat: add GORM integration with repository pattern
- Add GORM models in models/ directory with proper column tags
- Create repository interfaces and implementations in core/repository/
- Add database package with MySQL and SQLite support
- Add UUID ID utility for GORM models
- Implement complete repository layer replacing SQL-based data access
- Add database migrations and index creation
- Support both MySQL and SQLite drivers with auto-migration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 22:07:51 +12:00
Patrick Nagurny
4821cbca62 Merge pull request #22 from pnagurny/bug/fix-tx-pagination
fix txs by account pagination bug
2021-01-28 12:50:03 -07:00
Patrick Nagurny
df6901ef8a fix txs by account pagination bug 2021-01-28 12:47:49 -07:00
Patrick Nagurny
4e472c9508 fix from 2020-11-25 10:25:20 -05:00
Patrick Nagurny
a5ebe35890 make Sender header match From 2020-11-25 10:15:16 -05:00
Patrick Nagurny
73bf3953c2 switch to mailgun 2020-11-23 11:13:23 -05:00
Patrick Nagurny
6ec5177aae remove spaces and convert email to lowercase 2020-07-23 12:31:09 -06:00
Patrick Nagurny
0ea88b8e25 add elapsed time to logger 2020-01-15 12:06:56 -05:00
Patrick Nagurny
122449f8fc fix issue #13 2020-01-15 11:21:23 -05:00
Patrick Nagurny
45fc45736d budget api doc fix 2020-01-14 14:51:27 -05:00
Patrick Nagurny
f2877230e2 format code 2020-01-14 14:29:00 -05:00
Patrick Nagurny
83f3cfc983 api version 1.4.0 2020-01-14 14:22:15 -05:00
Patrick Nagurny
0a91b19b5c add budget feature 2020-01-14 14:14:16 -05:00
Patrick Nagurny
c098ff2297 fix update account parent bugs 2020-01-13 10:24:17 -05:00
Patrick Nagurny
1272953a2f fix concurrent map write issue 2019-12-13 10:26:03 -05:00
Patrick Nagurny
553e639519 api version 1.3.0 2019-06-27 16:54:24 -04:00
Patrick Nagurny
a67f270b6d add timezone to org 2019-06-27 16:43:18 -04:00
Patrick Nagurny
e64f60fd09 fix connection locks issues 2019-05-20 10:40:40 -04:00
Tarcisio Gruppi
56c1e8b0b4 Removed vim's temp file 2019-03-30 17:58:09 -03:00
Tarcisio Gruppi
cbb10098d3 Added GET /orgs/:orgId/accounts/:accountI API endpoint 2019-03-27 01:49:26 -03:00
Tarcisio Gruppi
dd34ec1192 typo: s/1.1.1/1.1.0/ 2019-01-18 18:33:26 -02:00
Tarcisio Gruppi
e18cb8f6e0 Updated API changelog, added version 1.1.0 2019-01-18 18:12:37 -02:00
Tarcisio Gruppi
72c21482b8 Updated API version in api and ws files 2019-01-18 18:12:19 -02:00
Tarcisio Gruppi
09cd255bcc Updated API version 2019-01-18 12:39:21 -02:00
Tarcisio Gruppi
471afa4e0e Added GET /health-check and related files 2019-01-18 12:39:21 -02:00
Tarcisio Gruppi
27f15e3436 gofmt 2019-01-18 12:39:16 -02:00
Tarcisio Gruppi
cf543ca60b Added log for database connection error 2019-01-11 17:23:44 -02:00
Tarcisio Gruppi
0f8d2d65d8 Added Config.Address to allow the server to bind to a different IP address 2019-01-11 16:16:56 -02:00
Tarcisio Gruppi
b1fdfcff37 Enable the server to run without SSL if not certificate is provided 2019-01-11 16:16:22 -02:00
Tarcisio Gruppi
82757607f8 Updated error logging in core/server.go 2019-01-11 16:15:49 -02:00
Tarcisio Gruppi
8413203504 Updated log messages for ./config.json operations 2019-01-11 15:49:21 -02:00
Tarcisio Gruppi
c407945109 Added Config.DatabaseAddress
This allows the server to connect to a MySQL server in a different
machine.
2019-01-11 15:13:42 -02:00
Patrick Nagurny
291538e341 escape % signs 2018-12-27 15:31:50 -05:00
Patrick Nagurny
cf1d312f9e validate email address 2018-11-15 10:14:59 -05:00
Patrick Nagurny
1909985489 fix apikeys routes 2018-11-08 13:52:23 -05:00
Patrick Nagurny
f958f9c580 don't use prefix for /ws 2018-11-08 12:35:15 -05:00