Skip to content

Development#7

Merged
senbar merged 34 commits intomasterfrom
development
Jan 4, 2026
Merged

Development#7
senbar merged 34 commits intomasterfrom
development

Conversation

@senbar
Copy link
Copy Markdown
Contributor

@senbar senbar commented Jan 4, 2026

No description provided.

szymekc and others added 30 commits November 24, 2023 18:48
Changed handling of returning no result queries from returning some wild null values unsupported
by F# to try catching not OrDefault query and returning Option.

Added webpush implemented with C# webpush lib. Its super annoying rn though, theres no limitng on
notifications so it will spam users even on their own messages. Added table for storing subscription
instances which probably can use some work- maybe put it for each user no reason to hold old ones.

Added commented out admin endpoint for testing webpush sending message to everyone.
Added ignore rule to gitignore for appsettings for specific env.
Now all users of sigma chat will be notified, before it selected only
the most recent subscription since I have setup it this way for
debugging.

In the future it should only notify users who are participating in chat
and should have throttling so that it doesn't spam.
Option type is now mapped from dapper nullable columns. Because Dapper
is not really design to work with F# it was mapping null values to
strings etc. Now if value is optioned in Model null will be mapped to
none. Also added Json FSharp lib which maps Options back to null/value
in json so that frontend doesn't get option objects.

The sql timeout bug
If chat was longer than 100 messages JOIN on message with Users caused
some requests to timeout. I initially thought it was caused by bug in
dapper regarding mapping null to string. Turns out it was actually
caused by bug mentioned in
npgsql/efcore.pg#1599 and related issues.
It seems timeouts stopped happening after bumping npgql and Dapper
versions.
Added profile image upload based on azurite. Azurite has setup in docker
compose and takes account and key from azurite.env.
Profile pictures store is public, user model provides blob name which
can be constructed into link on frontend provided front has azurite
public facing url.
Users profile pictures are stored in new table, I dunno why yet but it
can be helpful in the future (also we would loose original file name).

Renamed all Db modules into Queries for obvious reasons.
Blob storage feature and sql timeout fix
Added pagination for chat messages. Client includes last fetched message
creation date in query params of messages get to paginate.
migrated form azurite because it was pain in the ass to use in
production with no tooling for storage explore. Added minio client and
compose setup, on 9000 admin ui is available to explore buckets and
objects. Added mapping of public facing url for profile pictures to user
DTO model, minio should be publicly accessible for this to work since
this is just url straight to that. Added setup of buckets with public
access policies on database schema setup.
szymekc and others added 4 commits May 17, 2024 23:09
fix: Update PostgreSQL data volume path
get rid off azurite stuff, remove appsettings from git index, cleanup
compose for minio since older image is no longer working
@senbar senbar merged commit 42397ca into master Jan 4, 2026
1 check failed
@senbar senbar deleted the development branch January 4, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants