Added comprehensive README.md documentation to every project and subfolder in the solution. Each README describes the purpose, key files, structure, dependencies, and design patterns for its area. This improves codebase navigability and maintainability, and includes a maintenance note to keep docs in sync with future code changes. |
||
|---|---|---|
| .. | ||
| Addresses | ||
| Groups | ||
| Locations | ||
| LogItems | ||
| Messages | ||
| Profiles | ||
| ServiceProviders | ||
| Users | ||
| AcLogItemWriterBase.cs | ||
| AcModelDtoExtension.cs | ||
| AyCode.Entities.csproj | ||
| PermissionContextMappingSubjectType.cs | ||
| README.md | ||
README.md
AyCode.Entities
Abstract base entity implementations for the AyCode domain model. All entities are abstract and generic — concrete implementations live in application-specific projects. Implements the interfaces defined in AyCode.Interfaces.
Folder Structure
| Folder | Purpose |
|---|---|
Addresses/ |
AcAddress — address entity with lat/lng, validation flag |
Groups/ |
GroupBase — base group entity with IsPublic flag |
Locations/ |
LocationBase — read-only location (lat/lng/address) |
LogItems/ |
AcLogItemClient — MessagePack-serializable log item DTO |
Messages/ |
AcEmailMessage<T>, AcEmailRecipient<T> — email messaging system |
Profiles/ |
AcProfile<TAddress> — user profile with name, media, address FK |
ServiceProviders/ |
AcCompany<...> — company entity with owner, users, commission |
Users/ |
AcUser<...>, AcUserToCompany<...>, AcUserTokenBase — user, junction table, auth tokens |
Root Files
PermissionContextMappingSubjectType.cs— Enum:NotDefined(0),User(5),Group(10).AcLogItemWriterBase.cs— Generic log writerAcLogItemWriterBase<TLogItem>extendingAcLogWriterBase. Thread-safe via mutex. AbstractWriteLogItemCallback()for concrete implementations.AcModelDtoExtension.cs— Extension methods for entity-to-DTO conversion viaActivator.CreateInstance.
Key Design Patterns
- Abstract + Generic — All entities are
abstractwith generic type parameters for navigation properties (e.g.,AcCompany<TUser, TUserToCompany, TProfile, TAddress>). This allows different applications to compose concrete types. - Interface implementation — Each entity implements its corresponding
AyCode.Interfacesinterface. - Timestamps — All entities implement
ITimeStampInfo(Created,Modified). - Guid PKs — Most entities use
Guid Idas primary key;AcUserTokenBaseusesint Id(auto-increment).
Dependencies
| Dependency | Purpose |
|---|---|
AyCode.Interfaces |
Interface contracts this project implements |
MessagePack.Annotations |
[MessagePackObject] on AcLogItemClient |
LLM Maintenance: If you modify code in this folder, update this README to reflect the changes. If you notice the README content does not match the current code, automatically update the README to match the code.