47 lines
2.4 KiB
Markdown
47 lines
2.4 KiB
Markdown
# 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.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) |
|