AyCode.Core/AyCode.Entities
Loretta ffd537b5eb Refactor: Split and expand project-level documentation
- Move all major feature docs (logging, binary, SignalR, DataSource) into per-project `docs/` folders with dedicated Markdown files.
- Split monolithic docs into focused files: `BINARY_FORMAT.md`, `BINARY_FEATURES.md`, `BINARY_OPTIONS.md`, `LOGGING.md`, `LOGGING_SERVER.md`, `LOGGING_REMOTE.md`, `SIGNALR.md`, `SIGNALR_SERVER.md`, `SIGNALR_DATASOURCE.md`.
- Update all references in `README.md`, `copilot-instructions.md`, `GLOSSARY.md`, and `ARCHITECTURE.md` to point to the correct per-project doc.
- Add documentation tables to each project’s `README.md` and clarify folder structure.
- Update `.csproj` files to include `docs/**/*.md` for packaging.
- Remove obsolete/moved docs from the solution file.
- Ensure all technical debt warnings and cross-references are preserved and accurate.
- No code changes; documentation only.
2026-03-29 22:16:28 +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 Refactor: Split and expand project-level documentation 2026-03-29 22:16:28 +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
README.md Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00

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 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