AyCode.Core/AyCode.Entities
Loretta fdff39c44b Add structured metadata blocks to all project/repo docs
Added standardized metadata blocks to the top of each project and repo documentation file. These blocks define project type, and for repos, include layer and dependencies, improving clarity and enabling better tooling support.
2026-03-30 08:53:56 +02:00
..
Addresses Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Groups Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Locations Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
LogItems Update README links to use code-style paths for docs 2026-03-30 08:01:05 +02:00
Messages Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Profiles Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
ServiceProviders Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
Users Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
AcLogItemWriterBase.cs refactroing, improvements, fixes, etc... 2024-05-18 05:12:23 +02:00
AcModelDtoExtension.cs AcModelDtoExtension improvements 2025-09-12 13:36:11 +02:00
AyCode.Entities.csproj Add .targets file 2025-08-31 13:07:34 +02:00
PermissionContextMappingSubjectType.cs Add PermissionViewSql; fixes 2023-12-13 02:25:58 +01:00
README.md Add structured metadata blocks to all project/repo docs 2026-03-30 08:53:56 +02:00

README.md

AyCode.Entities

@project { type = "framework" }

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 writer AcLogItemWriterBase<TLogItem> extending AcLogWriterBase. Thread-safe via mutex. Abstract WriteLogItemCallback() for concrete implementations.
  • AcModelDtoExtension.cs — Extension methods for entity-to-DTO conversion via Activator.CreateInstance.

Key Design Patterns

  • Abstract + Generic — All entities are abstract with 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.Interfaces interface.
  • Timestamps — All entities implement ITimeStampInfo (Created, Modified).
  • Guid PKs — Most entities use Guid Id as primary key; AcUserTokenBase uses int Id (auto-increment).

Dependencies

Dependency Purpose
AyCode.Interfaces Interface contracts this project implements
MessagePack.Annotations [MessagePackObject] on AcLogItemClient