Aaron Po
2ab32746c8
Add photo upload wiring and image validation
2026-08-29 17:19:24 -04:00
Aaron Po
1c2a96c6f2
Wire SeaweedFS credentials through to the api.core dev container
...
api.core now waits on seaweedfs and receives its service URL and credentials so the file storage provider can connect.
2026-08-28 00:34:39 -04:00
Aaron Po
d2d78b4323
Add unit tests for UploadPhotoHandler
2026-08-28 00:33:03 -04:00
Aaron Po
05882f36e4
Add PhotoUpload feature for uploading photos to file storage
...
Adds UploadPhotoCommand/Handler/Validator and PhotoUploadRepository, invoked via MediatR by other features' commands (e.g. a future CreateBreweryPhoto) rather than exposed through its own controller. Wires the feature and IFileStorageProvider into API.Core.
2026-08-28 00:32:53 -04:00
Aaron Po
999c94eedc
Add SeaweedFS-backed file storage infrastructure
...
Introduces IFileStorageProvider and an S3-compatible implementation (S3FileStorageProvider) configured via new SEAWEEDFS_* configuration keys, for storing uploaded files against SeaweedFS.
2026-08-28 00:32:41 -04:00
Aaron Po
61fb906060
Add Photo domain entity
2026-08-28 00:32:26 -04:00
Aaron Po
db07d87f97
Extract shared RollbackQuietlyAsync helper into DapperRepository base class
...
Avoids duplicating the transaction-rollback-swallowing logic in every repository that needs it, starting with BreweryRepository.
2026-08-28 00:32:13 -04:00
fcee0f9213
Organise ddl statements into separate files per create table ( #251 )
2026-08-26 22:16:56 -04:00
4ca35de7ef
Integrate NetTopologySuite and create CoordinateData mapping ( #250 )
2026-08-26 01:10:09 -04:00
ad1c09f139
Move brewery reverse geocoding from C# seeding to C++ pipeline ( #249 )
2026-08-25 22:24:11 -04:00
2b82d1918b
Extract shared configuration helpers into Infrastructure.Configuration library ( #248 )
2026-08-25 14:16:57 -04:00
8a047e8d9f
Update database handling code ( #247 )
2026-08-25 13:42:51 -04:00
Aaron Po
b64c42ebde
formatting
2026-08-24 01:09:48 -04:00
c825d99b0a
Refactor comments and update documentation for backend and pipeline ( #246 )
...
* Remove restating comments in backend
* Remove restating comments in frontend stories
* Remove restating comments in pipeline
* Remove restating comments in pipeline scripts
* Restore location-clear comment in BreweryRepository
* Remove stale/restating comments found in second pass
* Restore mock curated-data branch comment in main.cc
* Remove more restating/filler comments in backend
* Document account-management endpoints, compose files, and env generator
* Squashed commit of the following:
commit a8a5b8abd9969859c695092fae6990d03b2135ed
Author: Aaron Po <aaron.po97@gmail.com >
Date: Sun Aug 23 23:53:56 2026 -0400
Add reverse geocoding for brewery street addresses (#245 )
* Add geocoding to seed application, remove postal codes from generator
Update comments
* Update pipeline class diagram for OpenAI generator
* Update pipeline activity diagram for brewery coordinates and OpenAI backend
* Add mailpit, production, db-only, and minimal environments to deployment diagram
* Fix authentication flow diagram for Identity migration
* Add account-management flows to authentication diagram
* Fix database schema diagram note referencing removed AuthRepository
2026-08-24 01:09:48 -04:00
cd5fd2d998
Add reverse geocoding for brewery street addresses ( #245 )
...
* Add geocoding to seed application, remove postal codes from generator
Update comments
2026-08-24 01:09:48 -04:00
e738fe484a
Update generate pipeline to add OpenAI api as an additional backend (for comparison testing), add brewery coordinates ( #244 )
...
* add brewery coordinates
* Add openai mode
* Add coordinates to schema
* Fix C++ review findings in pipeline: k-prefixed enum values, include ordering, populated validation error messages, conventional const notation, and endl replaced with newline
2026-08-24 01:09:48 -04:00
31da1d557c
Handle fetch fail in client app, fix data binding in location data ( #243 )
...
* Improve error handling for server rendered routes
* Fix data binding issue for country/state codes (use alias in sql)
2026-08-24 01:09:48 -04:00
Aaron Po
6a44afd6b6
Replace raw environment variable reads with IConfiguration in backend
2026-08-24 01:09:48 -04:00
Aaron Po
c380bebdd6
Add self-service account management commands (delete, update username/email/password/profile)
2026-08-24 01:09:48 -04:00
Aaron Po
93e0d089f9
Remove obsolete AuthRepository/IAuthRepository
2026-08-24 01:09:47 -04:00
Aaron Po
77c3407792
Migrate Database.Seed to UserManager<ApplicationUser>
2026-08-24 01:09:47 -04:00
Aaron Po
fe83c47e37
Migrate TokenService.RefreshTokenAsync to UserManager
...
Last remaining IAuthRepository call site; RefreshTokenResult now
carries a plain (Guid, string) instead of UserAccount.
2026-08-24 01:09:47 -04:00
Aaron Po
63d195ddf7
Migrate handlers to UserManager<>
2026-08-24 01:09:47 -04:00
Aaron Po
f06f4bf3a9
Wire ASP.NET Core Identity DI alongside existing AuthRepository
...
Both stacks coexist until handlers are migrated one by one.
2026-08-24 01:09:47 -04:00
Aaron Po
3c0ca485b8
Decouple ITokenService from UserAccount entity
...
Token generation only ever needed the id/username, not the full UserAccount.
2026-08-24 01:09:47 -04:00
Aaron Po
1a7267ca4a
Add ApplicationUser, DapperUserStore, Argon2PasswordHasher scaffolding
...
Unwired Identity store/hasher adapters, ahead of wiring them into DI.
2026-08-24 01:09:47 -04:00
Aaron Po
b61a440994
Delete report.sarif
2026-08-24 01:09:47 -04:00
Aaron Po
f433b21bc1
Fix code analysis warnings
2026-08-24 01:09:47 -04:00
1031a76099
Create launchSettings.json ( #239 )
2026-08-24 01:09:47 -04:00
df160f1f72
Web/backend/solution rename ( #238 )
...
* Rename solution
* Remove unused item group in API.Core
2026-08-24 01:09:47 -04:00
de1e9ac02b
Migrate Auth/Brewery/Location repositories to pure Dapper; rename Timer to RowVersion ( #237 )
...
* Integrate Spectre.Console into seed application, use async data loading
* Replace stored-procedure repositories with Dapper-based repositories
Removes the USP_* stored procedures for Auth, Location, and Brewery
data access in favour of services built with Dapper.
Adds a new Features.Locations slice and optimistic concurrency support
for the Brewery slice.
* Add new documentation for Dapper migration/database schema
* Update FluentAssertions to most recent open source ver
* Update XML doc comment in backend projects
* Modify brewery location dto to include denormalized data
* - Updated column names from 'Timer' to 'RowVersion' in schema.sql for
- Introduced new BeerPost entity and updated BreweryPost and BreweryPostLocation entities to use 'RowVersion' for concurrency.
- Modified UserAccount, UserCredential, UserVerification, City, StateProvince, and Country entities to use 'RowVersion' instead of 'Timer'.
- Updated tests and command handlers to reflect changes in concurrency token from 'Timer' to 'RowVersion'.
- Adjusted BreweryDto and BreweryDtoMapper to include 'RowVersion' and updated mapping logic accordingly.
- Ensured all repository methods and interfaces are aligned with the new concurrency handling approach.
* updates
* Add BeerStyle entity and related properties; refactor BreweryDto to remove BeerPosts
* Fix Api.Specs test failures: stale Timer column refs and missing test.user fixture
* Remove repository tests, usages of registration dto used in repo
* archive old stored procs/functions
* update stale docs
* Add instructions for generating cryptographically secure base64 secrets on macOS/Linux and Windows
2026-08-24 01:09:47 -04:00
Aaron Po
30cdb48491
remove comment
2026-08-24 01:09:47 -04:00
Aaron Po
37667db2f6
Format
2026-08-24 01:09:47 -04:00
Aaron Po
f665df578c
update backend/shared docs
2026-08-24 01:09:47 -04:00
Aaron Po
f9acdc8ada
update infra docs
2026-08-24 01:09:47 -04:00
Aaron Po
19dfad5ab5
update features docs
2026-08-24 01:09:47 -04:00
Aaron Po
633550f808
update domain docs
2026-08-24 01:09:47 -04:00
Aaron Po
2b69c99d54
update api docs
2026-08-24 01:09:47 -04:00
Aaron Po
1f43f48276
Add navigation properties to entity types
2026-08-24 01:09:47 -04:00
Aaron Po
9862d1cff4
format sql
2026-08-24 01:09:47 -04:00
Aaron Po
c9a02dbedf
Refactor user registration process to use UserRegistrationDto;
...
implement user registration in seed app
2026-08-24 01:09:47 -04:00
Aaron Po
d469c07250
Update database migration and seeding logic; adjust Docker port mapping
2026-08-24 01:09:47 -04:00
Aaron Po
76380d32c3
add wiring
2026-08-24 01:09:47 -04:00
Aaron Po
b2095e7bdd
Create biergarten_seed_2026-07-20T05-46-02.993511Z.sqlite
2026-08-24 01:09:47 -04:00
Aaron Po
5fd60b33f7
Add sqlite load into Database.Seed
2026-08-24 01:09:47 -04:00
Aaron Po
8e7ecf2fc3
Pipeline: City rename, add address/postal-code generation, add xeger generation ( #232 )
2026-08-24 01:09:47 -04:00
Aaron Po
10aed47def
commit csharpier config update
2026-08-24 01:09:47 -04:00
Aaron Po
1699da6b74
update mailkit
2026-08-24 01:09:47 -04:00
Aaron Po
cd99c1fbc3
formatting
2026-08-24 01:09:47 -04:00
Aaron Po
254431928f
code style cleanup
2026-06-20 15:54:53 -04:00