AyCode.Core/AyCode.Interfaces/README.md

2.5 KiB

AyCode.Interfaces

Domain interface contracts for the AyCode platform. Defines the shape of entities, DTOs, relationships, and service contracts. All interfaces are composable — small, single-responsibility interfaces are combined via inheritance to build up complex types.

Folder Structure

Folder Purpose
Addresses/ Address entity, DTO, relation, and foreign key interfaces
Entities/ Base entity interfaces: IEntity, IEntityGuid, IEntityInt, soft-delete support
EntityComment/ IEntityComment — adds Comment property
Enums/ IMessageTypes — message type enum container
Groups/ IGroupBase — base group entity (Guid + timestamps)
Locations/ ILocationBase — read-only lat/lng/address
Logins/ Login service contracts: Logout, Registration, ChangePassword, ForgotPassword
MediaInfo/ Media metadata: thumbnail URL, user media ID
Messages/ Email message system: message, recipient, sender service interfaces
Profiles/ User profile: name, full name, media, address, DTOs
ServiceProviders/ Company/service provider entity and relationship interfaces
StorageHandlers/ ISecureStorageHandler — async secure key-value storage
TimeStampInfo/ Created/Modified timestamps, ITimeStampDisableAutoSet marker
Users/ User entity, base, token, email, password, company relations, DTOs

Root Interfaces

  • IOwnerId.csGuid OwnerId property.
  • IAcModelDtoBase.cs — Base DTO interface (IEntityGuid); generic version adds CreateMainEntity().
  • ICustomForeignKey.cs — Generic marker for custom foreign keys (int/Guid variants).

Design Patterns

  • Composition over inheritance — Small interfaces (ITimeStampInfo, IAcEmailAddress, IPassword) are mixed in as needed.
  • Generic relationsIAcXxxRelation<T> pattern for navigation properties and collections.
  • Separate FK interfacesIAcXxxForeignKey for type-safe foreign key declarations.
  • DTO hierarchyDtoBase interfaces separate from full entity interfaces.
  • Soft delete — Optional via IAcSoftRemoveEntity / IAcSoftRemoveEntityGuid / IAcSoftRemoveEntityInt.

Dependencies

Dependency Purpose
AyCode.Core Core library (IId<T>, IForeignKey, enums, error codes)

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.