AyCode.Core/AyCode.Interfaces/README.md

2.4 KiB

AyCode.Interfaces

@project { type = "framework" }

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)