Skip to content
Merged
Show file tree
Hide file tree
Changes from 224 commits
Commits
Show all changes
254 commits
Select commit Hold shift + click to select a range
8622320
feat(domain): add Withdrawal entity
iPatrushevSergey Jan 29, 2026
ab419f0
feat(shared): add Luhn algorithm
iPatrushevSergey Jan 30, 2026
eea8813
feat(domain): add UserID value object
iPatrushevSergey Jan 30, 2026
8febbef
feat(domain): add Points value object
iPatrushevSergey Jan 30, 2026
1a61262
feat(domain): add OrderNumber value object
iPatrushevSergey Jan 30, 2026
bd44897
feat(domain): add VO errors
iPatrushevSergey Jan 30, 2026
9982f8e
docs(domain): translate entity comments to English
iPatrushevSergey Jan 30, 2026
1270936
feat(domain): add BalanceService
iPatrushevSergey Jan 31, 2026
41479cd
feat(domain): add WithdrawalService
iPatrushevSergey Jan 31, 2026
a9aa90b
docs(entity): clarify User comments
iPatrushevSergey Feb 1, 2026
2a419f9
docs(entity): clarify BalanceAccount comments
iPatrushevSergey Feb 1, 2026
4ae5da8
docs(entity): clarify Order and OrderStatus comments
iPatrushevSergey Feb 1, 2026
173ff74
docs(entity): clarify Withdrawal comment
iPatrushevSergey Feb 1, 2026
ac2bc7c
docs(service): clarify BalanceService comment
iPatrushevSergey Feb 1, 2026
9a7a87d
docs(service): clarify UserService comment
iPatrushevSergey Feb 1, 2026
8d6ff60
docs(service): clarify WithdrawalService comment
iPatrushevSergey Feb 1, 2026
769c067
docs(vo): clarify UserID comment
iPatrushevSergey Feb 1, 2026
1d45c4d
docs(vo): clarify OrderNumber comments
iPatrushevSergey Feb 1, 2026
d5fb7d2
docs(vo): clarify ErrInvalidOrderNumber comment
iPatrushevSergey Feb 1, 2026
873e98c
feat(application): add user DTOs
iPatrushevSergey Feb 1, 2026
350436a
feat(application): add application errors
iPatrushevSergey Feb 1, 2026
b146777
feat(application): add PasswordHasher port
iPatrushevSergey Feb 1, 2026
7d013db
feat(application): add TokenProvider port
iPatrushevSergey Feb 1, 2026
4a97ea0
feat(application): add generic UseCase port
iPatrushevSergey Feb 1, 2026
c94ff52
feat(application): add UserRepository port
iPatrushevSergey Feb 1, 2026
1541c9c
feat(application): add Login use case
iPatrushevSergey Feb 1, 2026
20bceee
feat(application): add Register use case
iPatrushevSergey Feb 1, 2026
e05186f
feat(adapters): add fake UserRepository
iPatrushevSergey Feb 2, 2026
5c37b91
feat(adapters): add BCrypt hasher
iPatrushevSergey Feb 2, 2026
e858800
feat(adapters): add JWT provider
iPatrushevSergey Feb 2, 2026
0bf2d71
feat(presentation): add UseCaseFactory
iPatrushevSergey Feb 3, 2026
a9d574a
feat(presentation): add HTTP DTOs for user
iPatrushevSergey Feb 3, 2026
9a47050
feat(presentation): add UserHandler
iPatrushevSergey Feb 3, 2026
623c599
feat(presentation): add Auth middleware
iPatrushevSergey Feb 3, 2026
b0b3a65
chore: add gin, jwt, bcrypt dependencies
iPatrushevSergey Feb 3, 2026
47767ce
feat(adapters): add fake UserRepository
iPatrushevSergey Feb 4, 2026
cc5aaaa
feat(adapters): add Zap logger
iPatrushevSergey Feb 4, 2026
c150042
feat(adapters): add Nop logger
iPatrushevSergey Feb 4, 2026
61ebeb1
feat(config): add config with flag and env
iPatrushevSergey Feb 4, 2026
a7a3ec9
feat(application): add Logger port
iPatrushevSergey Feb 4, 2026
b76680c
feat(presentation): add logger to UserHandler
iPatrushevSergey Feb 4, 2026
8b6dddc
docs(domain): clarify Order entity comments
iPatrushevSergey Feb 4, 2026
00b7027
refactor(config): remove unused getEnvOrDefault
iPatrushevSergey Feb 4, 2026
0d2124f
feat(composition root): add main.go
iPatrushevSergey Feb 5, 2026
b2ed835
feat(bootstrap): add Run function
iPatrushevSergey Feb 5, 2026
0f1de47
feat(bootstrap): add a constructor to create an app
iPatrushevSergey Feb 5, 2026
7860757
feat(bootstrap): add useCaseFactory
iPatrushevSergey Feb 5, 2026
0aefbf0
feat(booststrap): add router
iPatrushevSergey Feb 5, 2026
9bc0b24
feat(bootstrap): add start and shutdown server
iPatrushevSergey Feb 5, 2026
f330e6a
feat(bootstrap): pass logger to router
iPatrushevSergey Feb 6, 2026
e1c1ee9
feat(bootstrap): use custom middleware instead of gin.Default
iPatrushevSergey Feb 6, 2026
b18237b
feat(dto): add easyjson code generation
iPatrushevSergey Feb 6, 2026
553de0a
feat(dto): add easyjson marshaling for user DTOs
iPatrushevSergey Feb 6, 2026
0448a96
feat(middleware): add HTTP request logger
iPatrushevSergey Feb 6, 2026
f347fcf
chore(deps): add caarlos0/env, easyjson, zap
iPatrushevSergey Feb 6, 2026
f047bc1
chore(deps): update go.sum for new dependencies
iPatrushevSergey Feb 6, 2026
faaba92
chore(build): add Makefile with build and run targets
iPatrushevSergey Feb 6, 2026
964ecb1
feat(domain): add OrderNumberValidator port
iPatrushevSergey Feb 7, 2026
83841df
refactor(domain): inject validator into NewOrderNumber
iPatrushevSergey Feb 7, 2026
f80a1cb
feat(adapters): add LuhnValidator for order numbers
iPatrushevSergey Feb 7, 2026
a808735
refactor(config): extract Address, Duration, BCryptCost to types.go
iPatrushevSergey Feb 7, 2026
210a48d
refactor(config): remove zap dependency, add BCryptCost
iPatrushevSergey Feb 7, 2026
2c037b9
feat(auth): make bcrypt cost configurable
iPatrushevSergey Feb 7, 2026
6524903
feat(bootstrap): pass BCryptCost from config to hasher
iPatrushevSergey Feb 7, 2026
a576e76
refactor(bootstrap): expand config logging
iPatrushevSergey Feb 7, 2026
ae063a8
docs(build): clarify go_json tag usage
iPatrushevSergey Feb 7, 2026
85659a7
feat(middleware): add generic compression middleware
iPatrushevSergey Feb 8, 2026
09105db
refactor(middleware): introduce LogFormatter interface
iPatrushevSergey Feb 8, 2026
20d2691
refactor(middleware): introduce TokenExtractor interface
iPatrushevSergey Feb 8, 2026
53445f0
refactor(bootstrap): inject middleware dependencies
iPatrushevSergey Feb 8, 2026
09d6bea
docs(config): clarify parsing steps
iPatrushevSergey Feb 8, 2026
aa05664
feat(shared): add Querier interface
iPatrushevSergey Feb 9, 2026
ff0ec57
build(deps): add pgx/v5
iPatrushevSergey Feb 9, 2026
d0aa636
feat(port): add Transactor interface
iPatrushevSergey Feb 10, 2026
711d5e0
feat(postgres): add Querier interface
iPatrushevSergey Feb 10, 2026
51b531a
feat(postgres): add Transactor implementation
iPatrushevSergey Feb 10, 2026
b9d842d
feat(postgres): add UserRepository
iPatrushevSergey Feb 10, 2026
0215c4f
refactor(config): group settings into sub-configs
iPatrushevSergey Feb 10, 2026
21813ce
feat(bootstrap): add NewPool for database initialization
iPatrushevSergey Feb 10, 2026
968a86b
refactor(bootstrap): use grouped config
iPatrushevSergey Feb 10, 2026
437e891
refactor(bootstrap): use grouped config in Run
iPatrushevSergey Feb 10, 2026
d04fc97
refactor(shared): remove postgres package
iPatrushevSergey Feb 10, 2026
24cefa6
build(deps): add pgerrcode
iPatrushevSergey Feb 11, 2026
eceaba7
feat(postgres): add error classifier
iPatrushevSergey Feb 11, 2026
b54f438
feat(postgres): add retry with exponential backoff
iPatrushevSergey Feb 11, 2026
30c61bb
feat(config): add RetryConfig
iPatrushevSergey Feb 11, 2026
49d8c4f
feat(postgres): add retry support to Transactor
iPatrushevSergey Feb 11, 2026
4ee7f98
feat(postgres): add retry to UserRepository queries
iPatrushevSergey Feb 11, 2026
aba000f
feat(bootstrap): add database migration runner
iPatrushevSergey Feb 13, 2026
fb598d5
feat(bootstrap): add order handlers to router
iPatrushevSergey Feb 13, 2026
b751096
feat(presentation): add shared httpcontext package
iPatrushevSergey Feb 14, 2026
4c70f30
refactor(middleware): use httpcontext for context keys
iPatrushevSergey Feb 14, 2026
08ecb95
feat(handler): add OrderHandler for order upload and listing
iPatrushevSergey Feb 14, 2026
89b15c4
feat(dto): add HTTP order response DTO
iPatrushevSergey Feb 14, 2026
2dd594d
build(dto): add easyjson generation directive for OrderResponse
iPatrushevSergey Feb 14, 2026
41aec39
build(dto): generate easyjson for OrderResponse
iPatrushevSergey Feb 14, 2026
620c08c
feat(domain): add OrderService for order entity creation
iPatrushevSergey Feb 14, 2026
073bbf9
feat(usecase): add UploadOrder use case with Luhn validation and conf…
iPatrushevSergey Feb 14, 2026
8edc7bc
feat(usecase): add ListOrders use case for retrieving user orders
iPatrushevSergey Feb 14, 2026
a1a44c0
refactor(handler): use application error instead of domain error in O…
iPatrushevSergey Feb 14, 2026
aac41a1
build(deps): add golang-migrate, promote pgerrcode to direct dependency
iPatrushevSergey Feb 14, 2026
f3013d0
refactor(handler): use httpcontext instead of middleware in UserHandler
iPatrushevSergey Feb 14, 2026
7edffc3
feat(application): add ErrInsufficientBalance and ErrInvalidOrderNumb…
iPatrushevSergey Feb 14, 2026
521a094
docs(usecase): add structured error documentation to LoginUser.Execute
iPatrushevSergey Feb 14, 2026
c0013cd
feat(dto): add application DTOs for order upload input and order list…
iPatrushevSergey Feb 14, 2026
d91880b
feat(postgres): add OrderRepository with CRUD, status mapping, and re…
iPatrushevSergey Feb 14, 2026
334f7a4
feat(port): add OrderRepository interface
iPatrushevSergey Feb 14, 2026
24b0240
feat(dto): add application DTOs for balance and withdrawal input/output
iPatrushevSergey Feb 14, 2026
34c3d5c
feat(port): add BalanceAccountRepository interface
iPatrushevSergey Feb 14, 2026
6b92914
feat(usecase): add GetBalance use case for retrieving user balance
iPatrushevSergey Feb 14, 2026
0f06acf
feat(dto): add HTTP DTOs for balance response and withdraw request
iPatrushevSergey Feb 14, 2026
aa995d1
build(dto): generate easyjson for balance HTTP DTOs
iPatrushevSergey Feb 14, 2026
4e24e9d
feat(handler): add BalanceHandler for balance, withdraw, and withdraw…
iPatrushevSergey Feb 14, 2026
5eaf7af
feat(postgres): add ErrOptimisticLock and mark it as retriable
iPatrushevSergey Feb 14, 2026
7b7daf0
refactor(postgres): remove ErrOptimisticLock and its retriability check
iPatrushevSergey Feb 14, 2026
b8e4639
feat(application): add ErrOptimisticLock for version conflict detection
iPatrushevSergey Feb 14, 2026
b86be29
feat(application): add WithOptimisticRetry helper for transaction-lev…
iPatrushevSergey Feb 14, 2026
325822a
feat(postgres): add BalanceAccountRepository
iPatrushevSergey Feb 14, 2026
16e1f90
feat(bootstrap): add balance and withdrawal routes to protected group
iPatrushevSergey Feb 14, 2026
31d04f2
feat(dto): add application DTO for withdrawal output
iPatrushevSergey Feb 14, 2026
8b473e0
feat(port): add WithdrawalRepository interface
iPatrushevSergey Feb 14, 2026
0818047
feat(usecase): add ListWithdrawals use case for retrieving user withd…
iPatrushevSergey Feb 14, 2026
bdb2317
feat(usecase): add Withdraw use case with optimistic retry
iPatrushevSergey Feb 14, 2026
24cb3ae
feat(postgres): add WithdrawalRepository
iPatrushevSergey Feb 14, 2026
1994406
feat(domain): add CreateAccount method to BalanceService
iPatrushevSergey Feb 14, 2026
22cc1bf
refactor(usecase): create user and balance account atomically in Regi…
iPatrushevSergey Feb 14, 2026
bfcf1bc
feat(dto): add HTTP withdrawal response DTO
iPatrushevSergey Feb 14, 2026
a5ccc87
build(dto): generate easyjson for WithdrawalResponse
iPatrushevSergey Feb 14, 2026
863505d
feat(accrual): add HTTP client for external accrual system
iPatrushevSergey Feb 15, 2026
49d3f96
feat(dto): add AccrualOrderInfo DTO
iPatrushevSergey Feb 15, 2026
abeed5b
feat(port): add AccrualClient interface
iPatrushevSergey Feb 15, 2026
8cadb38
feat(port): add BackgroundRunner interface
iPatrushevSergey Feb 15, 2026
ea0e328
feat(usecase): add ProcessAccrual use case
iPatrushevSergey Feb 15, 2026
c1b3693
feat(application): add ErrRateLimit error
iPatrushevSergey Feb 15, 2026
4845a3c
feat(config): add server and accrual tuning parameters
iPatrushevSergey Feb 15, 2026
3591372
refactor(factory): use port.BackgroundRunner for ProcessAccrual
iPatrushevSergey Feb 15, 2026
f6cbdee
refactor(handler): extract body size limit into named constant
iPatrushevSergey Feb 15, 2026
7148069
feat(worker): add AccrualWorker as driving adapter
iPatrushevSergey Feb 15, 2026
f22d7a2
refactor(bootstrap): accept shutdown timeout as parameter
iPatrushevSergey Feb 15, 2026
16d6200
feat(bootstrap): wire all dependencies in composition root
iPatrushevSergey Feb 15, 2026
bd3ba7b
feat(bootstrap): add application entrypoint with graceful shutdown
iPatrushevSergey Feb 15, 2026
bafd039
feat(bootstrap): add UseCaseFactory with all use cases
iPatrushevSergey Feb 15, 2026
b69710d
feat(migrations): add users table
iPatrushevSergey Feb 15, 2026
fa0981c
feat(migrations): add balance_accounts table
iPatrushevSergey Feb 15, 2026
eca2e20
feat(migrations): add orders table
iPatrushevSergey Feb 15, 2026
faf1b19
feat(migrations): add withdrawals table
iPatrushevSergey Feb 15, 2026
380fcf1
feat(migrations): add updated_at triggers
iPatrushevSergey Feb 15, 2026
6b75595
docs: add architecture overview with Mermaid diagrams
iPatrushevSergey Feb 15, 2026
adddf77
feat(deps): add testify and go.uber.org/mock to v0.6
iPatrushevSergey Feb 15, 2026
f0a7fb9
refactor(port): split UserRepository into UserReader and UserWriter
iPatrushevSergey Feb 15, 2026
237ec62
refactor(port): split OrderRepository into OrderReader and OrderWriter
iPatrushevSergey Feb 15, 2026
5bbb233
refactor(port): split BalanceAccountRepository into Reader and Writer
iPatrushevSergey Feb 15, 2026
24c5ce6
refactor(port): split WithdrawalRepository into Reader and Writer
iPatrushevSergey Feb 15, 2026
e3aaf21
refactor(usecase): use UserReader, UserWriter, BalanceAccountWriter
iPatrushevSergey Feb 15, 2026
2706cfd
refactor(usecase): use UserReader instead of UserRepository
iPatrushevSergey Feb 15, 2026
35554a4
refactor(usecase): use OrderReader and OrderWriter
iPatrushevSergey Feb 15, 2026
bf536aa
refactor(usecase): use OrderReader instead of OrderRepository
iPatrushevSergey Feb 15, 2026
379871e
refactor(usecase): use BalanceAccountReader instead of full repository
iPatrushevSergey Feb 15, 2026
ce32b0a
refactor(usecase): use BalanceAccountReader, Writer and WithdrawalWriter
iPatrushevSergey Feb 15, 2026
9e2de82
refactor(usecase): use WithdrawalReader instead of full repository
iPatrushevSergey Feb 15, 2026
4a7270e
refactor(usecase): use granular Reader/Writer for orders and balance
iPatrushevSergey Feb 15, 2026
ce0d79e
refactor(bootstrap): pass granular interfaces to use case constructors
iPatrushevSergey Feb 15, 2026
c2d697f
test(mocks): generate UserReader, UserWriter, UserRepository mocks
iPatrushevSergey Feb 15, 2026
51f786b
test(mocks): generate OrderReader, OrderWriter, OrderRepository mocks
iPatrushevSergey Feb 15, 2026
2093c07
test(mocks): generate BalanceAccountReader, Writer, Repository mocks
iPatrushevSergey Feb 15, 2026
0180f04
test(mocks): generate WithdrawalReader, Writer, Repository mocks
iPatrushevSergey Feb 15, 2026
74282de
test(mocks): generate Transactor mock
iPatrushevSergey Feb 15, 2026
f5b5b27
test(mocks): generate PasswordHasher mock
iPatrushevSergey Feb 15, 2026
b41397d
test(mocks): generate AccrualClient mock
iPatrushevSergey Feb 15, 2026
b9c5cf9
test(mocks): generate Logger mock
iPatrushevSergey Feb 15, 2026
896c2d8
test(luhn): add unit tests for Luhn validation
iPatrushevSergey Feb 15, 2026
3837ebb
test(mocks): generate OrderNumberValidator mock
iPatrushevSergey Feb 15, 2026
dcddc2d
refactor(docs): reflect ISP split in architecture diagrams
iPatrushevSergey Feb 16, 2026
db4c474
test(auth): add unit tests for BCryptHasher
iPatrushevSergey Feb 16, 2026
9827aed
test(auth): add unit tests for JWTProvider
iPatrushevSergey Feb 16, 2026
b081a71
feat(port): add Clock interface
iPatrushevSergey Feb 16, 2026
c67a9f7
feat(adapters): add Real clock implementation
iPatrushevSergey Feb 16, 2026
c299d8d
test(mocks): generate Clock mock
iPatrushevSergey Feb 16, 2026
095d1d5
refactor(usecase): inject Clock into RegisterUser
iPatrushevSergey Feb 16, 2026
b027820
refactor(usecase): inject Clock into UploadOrder
iPatrushevSergey Feb 16, 2026
7d667b0
refactor(usecase): inject Clock into Withdraw
iPatrushevSergey Feb 16, 2026
3063217
refactor(usecase): inject Clock into ProcessAccrual
iPatrushevSergey Feb 16, 2026
8353195
refactor(bootstrap): pass Clock to use case constructors
iPatrushevSergey Feb 16, 2026
7f8b128
refactor(bootstrap): create and wire Real clock in composition root
iPatrushevSergey Feb 16, 2026
271e2c8
test(entity): add unit tests for BalanceAccount
iPatrushevSergey Feb 16, 2026
affcd87
test(entity): add unit tests for Order status transitions
iPatrushevSergey Feb 16, 2026
647a0a8
test(service): add unit tests for BalanceService
iPatrushevSergey Feb 16, 2026
be87b11
test(service): add unit tests for OrderService
iPatrushevSergey Feb 16, 2026
6bcebdd
test(service): add unit tests for UserService
iPatrushevSergey Feb 16, 2026
b86a021
test(service): add unit tests for WithdrawalService
iPatrushevSergey Feb 16, 2026
2bc105e
test(vo): add unit tests for OrderNumber
iPatrushevSergey Feb 16, 2026
cd8cc0f
test(config): add unit tests for Address, Duration, BCryptCost
iPatrushevSergey Feb 16, 2026
8964dfa
test(application): add unit tests for WithOptimisticRetry
iPatrushevSergey Feb 16, 2026
00ed820
test(usecase): add unit tests for GetBalance
iPatrushevSergey Feb 16, 2026
3f65207
test(usecase): add unit tests for ListOrders
iPatrushevSergey Feb 16, 2026
74024df
test(usecase): add unit tests for ListWithdrawals
iPatrushevSergey Feb 16, 2026
14abcb2
test(usecase): add unit tests for LoginUser
iPatrushevSergey Feb 16, 2026
4d6e489
test(usecase): add unit tests for Withdraw
iPatrushevSergey Feb 16, 2026
4a3e5ef
test(usecase): add unit tests for UploadOrder
iPatrushevSergey Feb 16, 2026
a8ff8bf
test(usecase): add unit tests for RegisterUser
iPatrushevSergey Feb 16, 2026
dfd44cd
test(usecase): add unit tests for ProcessAccrual
iPatrushevSergey Feb 16, 2026
700bab2
deps: add testcontainers-go v0.40.0
iPatrushevSergey Feb 17, 2026
11daf7a
test(handler): add UserHandler unit tests
iPatrushevSergey Feb 17, 2026
cf9e04c
test(handler): add OrderHandler unit tests
iPatrushevSergey Feb 17, 2026
d2fff3d
test(handler): add BalanceHandler unit tests
iPatrushevSergey Feb 17, 2026
51bdebc
gen(mocks): add MockUseCaseFactory
iPatrushevSergey Feb 17, 2026
941feb3
gen(mocks): add MockTokenProvider
iPatrushevSergey Feb 17, 2026
0fefea5
test(integration): add repository integration tests
iPatrushevSergey Feb 17, 2026
1d271c5
test(testutil): add testcontainers PostgreSQL helper
iPatrushevSergey Feb 17, 2026
bd50d79
test(integration): add E2E API tests
iPatrushevSergey Feb 17, 2026
04e40cc
docs: update SPECIFICATION.md
iPatrushevSergey Feb 17, 2026
3db8e2c
ci: update gophermart workflow
iPatrushevSergey Feb 17, 2026
e0e9d6c
ci: update statictest workflow
iPatrushevSergey Feb 17, 2026
5662c12
chore: add accrual binaries
iPatrushevSergey Feb 17, 2026
f655d0e
chore: remove obsolete .gitkeep files and old stubs
iPatrushevSergey Feb 17, 2026
cd360c8
chore: remove obsolete accrual .gitkeep files and gophermart README stub
iPatrushevSergey Feb 17, 2026
0c6cc2a
chore: remove README.md
iPatrushevSergey Feb 17, 2026
0dc3a93
fix(handler): close response body in UserHandler test
iPatrushevSergey Feb 17, 2026
b912c4c
chore: remove project_structure.txt
iPatrushevSergey Feb 17, 2026
af36a00
docs: add README with architecture overview and run instructions
iPatrushevSergey Feb 17, 2026
4fe6f1e
feat(pkg): add generic functional options helper
iPatrushevSergey Feb 23, 2026
39e878c
refactor(entity): add NewUser constructor
iPatrushevSergey Feb 23, 2026
117663f
refactor(entity): add NewOrder constructor
iPatrushevSergey Feb 23, 2026
37e8756
refactor(entity): add NewWithdrawal constructor
iPatrushevSergey Feb 23, 2026
5bf1fa2
refactor(usecase): use entity constructors in RegisterUser
iPatrushevSergey Feb 23, 2026
6c5739e
test(usecase): update RegisterUser tests
iPatrushevSergey Feb 23, 2026
7990a08
refactor(usecase): use entity constructor in UploadOrder
iPatrushevSergey Feb 23, 2026
93b5e99
test(usecase): update UploadOrder tests
iPatrushevSergey Feb 23, 2026
d06b698
refactor(usecase): use entity constructor in Withdraw
iPatrushevSergey Feb 23, 2026
a21c9c9
test(usecase): update Withdraw tests
iPatrushevSergey Feb 23, 2026
b0ee271
feat(port): add StreamByStatuses to OrderReader
iPatrushevSergey Feb 23, 2026
3c5f3ff
chore(mocks): regenerate OrderReader mock
iPatrushevSergey Feb 23, 2026
4d57006
feat(repo): implement StreamByStatuses for PostgreSQL
iPatrushevSergey Feb 23, 2026
20d9f3d
feat(config): add MaxWorkers to AccrualConfig
iPatrushevSergey Feb 23, 2026
5c991fd
refactor(usecase): parallelize accrual processing with errgroup
iPatrushevSergey Feb 23, 2026
2bcbfc2
test(usecase): update ProcessAccrual tests for streaming
iPatrushevSergey Feb 23, 2026
ec8859e
chore(deps): promote golang.org/x/sync to direct dependency
iPatrushevSergey Feb 23, 2026
e499a1e
refactor(bootstrap): apply functional options pattern to UseCaseFactory
iPatrushevSergey Feb 23, 2026
8631e31
refactor(bootstrap): update NewApp to use functional options
iPatrushevSergey Feb 23, 2026
beb47fc
test(integration): update E2E setup for functional options
iPatrushevSergey Feb 23, 2026
7afeedc
refactor(service): remove UserService, OrderService, WithdrawalService
iPatrushevSergey Feb 23, 2026
5a036c1
refactor(retry): apply functional options with backoff strategies
iPatrushevSergey Feb 23, 2026
724a157
refactor(transactor): accept RetryOption instead of RetryConfig
iPatrushevSergey Feb 23, 2026
94df6bd
refactor(repo): use transactor.DoWithRetry in OrderRepository
iPatrushevSergey Feb 23, 2026
43b46f2
refactor(repo): use transactor.DoWithRetry in UserRepository
iPatrushevSergey Feb 23, 2026
a33154d
refactor(repo): use transactor.DoWithRetry in BalanceAccountRepository
iPatrushevSergey Feb 23, 2026
f8d77ed
refactor(repo): use transactor.DoWithRetry in WithdrawalRepository
iPatrushevSergey Feb 23, 2026
541521c
refactor(bootstrap): use retry functional options in NewTransactor
iPatrushevSergey Feb 23, 2026
8e31625
test(repo): update integration tests for retry functional options
iPatrushevSergey Feb 23, 2026
f85df1d
test(integration): update E2E setup for retry functional options
iPatrushevSergey Feb 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/gophermart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
- name: Download autotests binaries
uses: robinraju/release-downloader@v1.8
with:
repository: Yandex-Practicum/go-autotests-bin
repository: Yandex-Practicum/go-autotests
latest: true
fileName: "*"
out-file-path: .tools
Expand All @@ -45,10 +45,10 @@ jobs:
mv $GITHUB_WORKSPACE/.tools/gophermarttest /usr/local/bin/gophermarttest
mv $GITHUB_WORKSPACE/.tools/random /usr/local/bin/random

- name: Build binaries
- name: Prepare binaries
run: |
(cd cmd/gophermart && go build -buildvcs=false -o gophermart)
(cd cmd/accrual && go build -buildvcs=false -o accrual)
(cd cmd/accrual && chmod +x accrual_linux_amd64)

- name: Test
run: |
Expand All @@ -58,7 +58,7 @@ jobs:
-gophermart-host=localhost \
-gophermart-port=8080 \
-gophermart-database-uri="postgresql://postgres:postgres@postgres/praktikum?sslmode=disable" \
-accrual-binary-path=cmd/accrual/accrual \
-accrual-binary-path=cmd/accrual/accrual_linux_amd64 \
-accrual-host=localhost \
-accrual-port=$(random unused-port) \
-accrual-database-uri="postgresql://postgres:postgres@postgres/praktikum?sslmode=disable"
2 changes: 0 additions & 2 deletions .github/workflows/statictest.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
name: go vet test

on:
workflow_dispatch:
pull_request:
push:
branches:
- master
- main

jobs:

statictest:
runs-on: ubuntu-latest
container: golang:1.24
Expand Down
Loading