47 lines
2.5 KiB
Markdown
47 lines
2.5 KiB
Markdown
# 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.cs`** — `Guid 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 relations** — `IAcXxxRelation<T>` pattern for navigation properties and collections.
|
|
- **Separate FK interfaces** — `IAcXxxForeignKey` for type-safe foreign key declarations.
|
|
- **DTO hierarchy** — `DtoBase` 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.
|