Document AcBinary wire format, sync docs, update conventions
- Add BINARY_FORMAT.md: full AcBinary wire format spec (markers, encoding, options, protocol, interactions) - Reference BINARY_FORMAT.md from GLOSSARY.md, Binaries/README.md, and Serializers/Binaries/README.md; add new glossary terms - Clarify and expand config options tables to match new doc - Add/clarify LLM maintenance rules: always sync .md files with code, auto-fix discrepancies - Update root README.md: AyCode.Core targets .NET 9, not 10; stress doc/code sync - Add code reuse and doc sync conventions to copilot-instructions.md and CONVENTIONS.md - Add docs/ folder and BINARY_FORMAT.md to solution as Solution Items - Minor clarifications and cross-links in ARCHITECTURE.md and other docs
This commit is contained in:
parent
cdcb200643
commit
17daf0fef2
|
|
@ -22,3 +22,6 @@
|
|||
10. Do not suggest removal/rollback as a solution — find a fix for the problem.
|
||||
11. Extension methods over instance methods for CRUD operations (see DbSets pattern).
|
||||
12. Session pattern for reads, Transaction pattern for writes (see DataLayers).
|
||||
13. **Target framework is net9.0** (set in AyCode.Core.targets). The SourceGenerator targets netstandard2.0. Consuming projects (AyCode.Blazor, FruitBankHybridApp UI) may target net10.0 but reference AyCode.Core DLLs built as net9.0.
|
||||
14. **No redundant code** — before writing new logic, search for existing methods. Reuse or extract shared logic into smaller methods rather than duplicating. If an existing method does most of what you need, split it into composable parts.
|
||||
15. **Keep all .md files in sync** — when you modify code, update any affected .md file (README.md, docs/, GLOSSARY, ARCHITECTURE, CONVENTIONS, BINARY_FORMAT, SCHEMA, etc.). If you notice any .md content does not match the current code, fix it automatically.
|
||||
|
|
|
|||
|
|
@ -21,7 +21,3 @@ BenchmarkDotNet-based performance benchmarking console app. Compares AcBinary se
|
|||
| `BenchmarkDotNet` | Benchmarking framework |
|
||||
| `MessagePack` | Serialization comparison target |
|
||||
| `MongoDB.Bson` | BSON comparison target |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,3 @@ Standalone benchmark console application for comparing serializer performance. T
|
|||
| `MemoryPack` | Competitor benchmark |
|
||||
| `MessagePack` | Competitor benchmark |
|
||||
| `Newtonsoft.Json` | Competitor benchmark |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,3 @@ Disabled features eliminate corresponding code blocks from generated output (zer
|
|||
|---|---|
|
||||
| `Microsoft.CodeAnalysis.CSharp` | Roslyn syntax/semantic APIs |
|
||||
| `Microsoft.CodeAnalysis.Analyzers` | Analyzer best practices |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Provides a singleton `GlobalLogger` for application-wide logging with multiple s
|
|||
## Key Files
|
||||
|
||||
- **`GlobalLogger.cs`** — Singleton static logger that delegates to `AcLoggerBase`. Supports category names, caller member tracking, and configurable `LogLevel` and `AppType`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -21,7 +21,3 @@ Server-side extension of AyCode.Core. Provides server-specific implementations t
|
|||
| `MessagePack` | MessagePack serialization |
|
||||
| `Newtonsoft.Json` | JSON serialization |
|
||||
| `Microsoft.Extensions.Logging.Abstractions` | Logging abstractions |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,3 @@ Concrete entity implementations inheriting from AyCode.Entities abstract generic
|
|||
## Relationships
|
||||
|
||||
User ↔ Company (many-to-many via UserToCompany), User → Profile → Address (one-to-one chain), EmailMessage → EmailRecipient (one-to-many).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -15,7 +15,3 @@ Concrete entity implementations for database integration testing. Exposes types
|
|||
| `MSTest` | Test framework |
|
||||
| `AyCode.Core.Tests` | Shared test utilities |
|
||||
| `AyCode.Entities` / `AyCode.Entities.Server` | Abstract entity base classes |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ GZip compression utility tests.
|
|||
## Key Files
|
||||
|
||||
- **`GzipHelperTests.cs`** — Tests GzipHelper.Compress(), DecompressToString(), DecompressToRentedBuffer() (ArrayPool), IsGzipCompressed() (magic byte detection).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Hand-written examples of the code pattern that the AcBinarySerializable source g
|
|||
## Key Files
|
||||
|
||||
- **`TestOrderWriter.cs`** — Example IGeneratedBinaryWriter: direct property access (no reflection), alphabetical order, value types inline, complex types delegate to runtime. Demonstrates ICache-friendly pattern (~500B vs 27KB runtime).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -25,7 +25,3 @@ MSTest unit tests for AyCode.Core serialization, compression, and utilities. Cov
|
|||
| `MessagePack` | Serialization comparison |
|
||||
| `MemoryPack` | Serialization comparison |
|
||||
| `MongoDB.Bson` | BSON comparison |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -30,7 +30,3 @@ Comprehensive test suite for binary and JSON serialization: round-trips, referen
|
|||
- **`GeneratedSerializerIntegrationTests.cs`** — Verifies generated writer types implement IGeneratedBinaryWriter.
|
||||
- **`QuickBenchmark.cs`** — Performance comparison: AcBinary vs MessagePack.
|
||||
- **`AcSerializerTestHelper.cs`** — Factory methods for test data.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,3 @@ Shared test entities, enums, data factories, and SignalR test infrastructure. Us
|
|||
- **`TestDataFactory.cs`** — Centralized factory with ID sequencing: CreateTag(), CreateCategory(), CreateUser(), CreateOrder(), CreateOrderItem().
|
||||
- **`SignalRTestInfrastructure.cs`** — SignalRMessageFactory, DTOs, CommonSignalRTags, SignalRBenchmarkData.
|
||||
- **`TestLogger.cs`** — Logger with capture for assertions: HasErrorLogs, HasWarningLogs, GetErrorMessages().
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 18
|
||||
VisualStudioVersion = 18.0.11222.15
|
||||
|
|
@ -44,6 +44,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||
AyCode.Core.targets = AyCode.Core.targets
|
||||
RunQuickBenchmark.bat = RunQuickBenchmark.bat
|
||||
RunQuickBenchmark.ps1 = RunQuickBenchmark.ps1
|
||||
.github\copilot-instructions.md = .github\copilot-instructions.md
|
||||
CLAUDE.md = CLAUDE.md
|
||||
README.md = README.md
|
||||
ToonExtendedInfo.txt = ToonExtendedInfo.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
|
@ -55,6 +58,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Core.Serializers.Sou
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Core.Serializers.Console", "AyCode.Core.Serializers.Console\AyCode.Core.Serializers.Console.csproj", "{6AB7CE43-3C98-1D54-9ABD-E5E9364541E7}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{D4B2E9F1-A6C3-4F7E-8D5B-3E2A1C4F6B8D}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
docs\ARCHITECTURE.md = docs\ARCHITECTURE.md
|
||||
docs\BINARY_FORMAT.md = docs\BINARY_FORMAT.md
|
||||
docs\CONVENTIONS.md = docs\CONVENTIONS.md
|
||||
docs\GLOSSARY.md = docs\GLOSSARY.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
|
|||
|
|
@ -22,7 +22,3 @@ Three compression algorithms with a unified static API. All implementations use
|
|||
|
||||
- `System.IO.Compression` (Brotli, GZip)
|
||||
- `System.Buffers` (ArrayPool)
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -9,7 +9,3 @@ Project-wide constants, error codes, environment configuration, regex patterns,
|
|||
- **`AcErrorCode.cs`** — Byte enum with 60+ error codes (0=UnknownError ... 255=Unset). Used across the entire API layer.
|
||||
- **`AcRegExpression.cs`** — Compile-time generated regex via `[GeneratedRegex]`: `EmailRegex()` (RFC-compliant), `PhoneNumberRegex()` (E.164 format).
|
||||
- **`AcValidate.cs`** — Input validation methods returning `bool` + `out AcErrorCode`: email, password, username, player name, phone, domain, user token format checks.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Shared enums used across the platform. All are `byte`-based for compact serializ
|
|||
- **`AppType.cs`** — Identifies application type: None(0), Server(1), Relay(5), Game(10), Web(15), Mobile(20), Dissonance(25), TestUnit(255).
|
||||
- **`MessageContextType.cs`** — Message routing context: Unset(0), System(5), Private(10), Group(15), Transfer(20), Product(25), Company(30).
|
||||
- **`TrackingState.cs`** — Entity change tracking: None(0), Get(1), GetAll(2), Add(3), Update(4), Remove(5).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,3 @@ Extension methods for collections, serialization, and common utilities.
|
|||
- **`EnumExtensions.cs`** — `GetDisplayName()` via `DisplayAttribute` reflection.
|
||||
- **`ExceptionExtensions.cs`** — `GetCategoryAndMemberNameFromStackTraceString()` for structured caller info extraction.
|
||||
- **`GuidExtensions.cs`** — `IsNullOrEmpty()` for `Guid` and `Guid?` with `[NotNullWhen]` annotations.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,3 @@ Utility classes for token generation, observable collections, type metadata, pas
|
|||
- **`PasswordHasher.cs`** — PBKDF2-HMAC-SHA512 with 10,000 iterations. **Critical: do not modify `GenerateDynamicSalt()` or `GenerateFinallySalt()` — login will break.** Format: `$bcrypt$v=1$salt=...base64...$hash=...base64...`
|
||||
- **`PropertyHelper.cs`** — `CopyPublicValueTypeProperties<TSource, TDest>()` for DTO/entity mapping via reflection.
|
||||
- **`TaskHelper.cs`** — `WaitTo()`/`WaitToAsync()` (poll predicate with timeout using `PeriodicTimer`), `Forget()` (fire-and-forget), `RunOnThreadPool()`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,3 @@ Core interfaces used throughout the framework.
|
|||
- `IForeignCollection<T>` — generic collection navigation marker (`T : IEnumerable`)
|
||||
- `IForeignCollection` — non-generic variant
|
||||
- **`IAcSerializableToJson.cs`** — Empty marker interface tagging types that can serialize to JSON. Used for query-time type filtering.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -32,7 +32,3 @@ IAcLogWriterBase
|
|||
### Supporting
|
||||
- **`IAcLogItemClient.cs`** — Structured log item DTO for remote transmission.
|
||||
- **`LogLevel.cs`** — Byte enum: Detail(0), Trace(5), Debug(10), Info(15), Suggest(17), Warning(20), Error(25), Disabled(255). **Must match the database LogLevel table.**
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -30,7 +30,3 @@ Core library for the AyCode platform. Targets .NET 10. Provides serialization (B
|
|||
| `Newtonsoft.Json` | JSON serialization (legacy, alongside System.Text.Json) |
|
||||
| `Microsoft.Extensions.Configuration.*` | appsettings.json + environment variable support |
|
||||
| `Microsoft.Extensions.Logging.Abstractions` | Logging abstractions |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -21,7 +21,3 @@ public class MyType
|
|||
|
||||
- None (standalone attribute definitions)
|
||||
- Consumed by the source generator and `Binaries/` serializer at runtime via `TypeMetadataWrapper` registry lookup.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ The serializer is generic over `TOutput` for strategy selection (`ArrayBinaryOut
|
|||
| 144+ | **Headers** — Metadata, RefHandling, CacheCount flags |
|
||||
| 192–255 | **Tiny ints** — Single-byte encoding for values -16 to 47 |
|
||||
|
||||
For the complete wire format specification (encoding rules, header format, interning protocol), see [`../../../../docs/BINARY_FORMAT.md`](../../../../docs/BINARY_FORMAT.md).
|
||||
|
||||
## Key Files
|
||||
|
||||
### Serialization
|
||||
|
|
@ -75,22 +77,25 @@ The serializer is generic over `TOutput` for strategy selection (`ArrayBinaryOut
|
|||
|
||||
## Configuration Options
|
||||
|
||||
| Option | Values | Description |
|
||||
|---|---|---|
|
||||
| `UseMetadata` | bool | Property hash metadata for cross-type deserialization |
|
||||
| `UseStringInterning` | None/Attribute/All | String deduplication strategy |
|
||||
| `ReferenceHandling` | None/OnlyId/All | Circular reference support |
|
||||
| `WireMode` | Compact/Fast | VarInt+UTF-8 vs fixed-width+UTF-16 |
|
||||
| `UseCompression` | None/Block/BlockArray | LZ4 compression support |
|
||||
| Option | Type | Default | Wire format impact |
|
||||
|---|---|---|---|
|
||||
| `WireMode` | Compact/Fast | Compact | Compact: VarInt+UTF-8. Fast: fixed-width+UTF-16 memcpy |
|
||||
| `ReferenceHandling` | None/OnlyId/All | All | Controls scan pass, `ObjectRefFirst(70)`/`ObjectRef(65)` markers |
|
||||
| `UseMetadata` | bool | false | Adds FNV-1a property hashes, enables `ObjectWithMetadata(69)` markers |
|
||||
| `UseStringInterning` | None/Attribute/All | Attribute | Controls `StringInternFirst(94)`/`StringInterned(92)` deduplication |
|
||||
| `MaxDepth` | byte | 255 | Nested objects beyond depth written as `Null(76)` |
|
||||
| `UseCompression` | None/Block/BlockArray | None | Post-serialization LZ4 compression (transparent wrapper) |
|
||||
| `PropertyFilter` | delegate? | null | Exclude properties from stream entirely |
|
||||
| `ThrowOnCircularReference` | bool | true | Cycle detection behavior when ref handling enabled |
|
||||
|
||||
**Presets:** `Default`, `FastMode`, `ShallowCopy`, `WasmOptimized`.
|
||||
**Key rule:** `ReferenceHandling=None` + `UseStringInterning=None` = no scan pass (fastest, single-phase).
|
||||
|
||||
**Presets:** `Default` (All refs, Attribute interning), `FastMode` (no refs, no interning), `ShallowCopy` (depth=0), `WasmOptimized` (+string caching).
|
||||
|
||||
For detailed option documentation with code branches and interactions, see [`../../../../docs/BINARY_FORMAT.md`](../../../../docs/BINARY_FORMAT.md#configuration-options).
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Base classes from parent `Serializers/` folder (`AcSerializerContextBase`, `TypeMetadataBase`, `IdentityMap`, etc.)
|
||||
- `System.Buffers` (ArrayPool, IBufferWriter)
|
||||
- LZ4 (optional compression)
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,3 @@ Serialization support for LINQ Expression trees and `IQueryable` objects. Conver
|
|||
|
||||
- `System.Linq.Expressions`
|
||||
- `AcSerializerCommon` from parent `Serializers/` folder
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -46,7 +46,3 @@ Custom JSON serialization/deserialization built on `System.Text.Json`'s `Utf8Jso
|
|||
|
||||
- Base classes from parent `Serializers/` folder
|
||||
- `System.Text.Json` (`Utf8JsonWriter`, `Utf8JsonReader`, `JsonElement`)
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -71,7 +71,3 @@ AcSerializerContextBase<TMetadata, TOptions>
|
|||
| `None` | No tracking, fastest path |
|
||||
| `OnlyId` | Only `IId<T>` types tracked (Binary only) |
|
||||
| `All` | All reference types tracked (required for JSON `$ref`) |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -74,7 +74,3 @@ Token-Oriented Object Notation (Toon) — an LLM-optimized serialization format
|
|||
|
||||
- Base classes from parent `Serializers/` folder
|
||||
- Expression utilities from `Expressions/` folder (for queryable serialization)
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,3 @@ Concrete database integration tests using entity implementations from AyCode.Cor
|
|||
|
||||
- **`DatabaseTestBase.cs`** — Concrete [TestClass] with Setup/TearDown, implements AcDatabaseTestBase<UserDbContext>.
|
||||
- **`appsettings.json`** — Test database connection configuration.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Concrete user database test implementations with real EF Core DbContext and DAL.
|
|||
- **`UserDbContext.cs`** — Sealed `AcUserDbContextBase` with 8 concrete entity types, lazy loading proxies, detailed EF errors.
|
||||
- **`UserDal.cs`** — Sealed `AcUserDalBase` providing concrete DAL for tests.
|
||||
- **`UserDalTests.cs`** — Concrete tests: GetUserByEmail, GetUserById, AddUser (with profile + address). Currently disabled.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,3 @@ MSTest base classes for database layer testing. Provides abstract test foundatio
|
|||
- **`GlobalUsings.cs`** — Global MSTest using.
|
||||
- **`AcDatabaseTestModelBase.cs`** — Generic base: pooled DAL access or direct DbContext access.
|
||||
- **`AcDatabaseTestBase.cs`** — Abstract test class with `DatabaseExistsTest()` connectivity validation.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base for comprehensive user DAL testing.
|
|||
## Key Files
|
||||
|
||||
- **`AcUserDalTestBase.cs`** — 8 generic type parameters. Tests: GetUserById (validates nested profile/address), GetUserByEmail, GetUserModelDtoDetailById, GetUserByEmailAsync, AddUserTest (full object graph with profile + address, then cleanup).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,3 @@ Generic Data Access Layer (DAL) abstraction with mutex-protected session/transac
|
|||
| Folder | Purpose |
|
||||
|---|---|
|
||||
| [`Users/`](Users/README.md) | User-specific DAL with authentication and CRUD |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ User-specific DAL extending AcDalBase with authentication, CRUD, and email valid
|
|||
|
||||
- **`AcUserDalBase.cs`** — GetUserById/ByEmail, AddUser, RemoveUser, UpdateUser, AuthenticateUser (with password verification + refresh token), GetUserModelDto (sync + async).
|
||||
- **`AcUserDalExtension.cs`** — Reserved for future user DAL extensions (currently contains commented legacy code).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Logger-specific EF Core DbContext with NoTracking query behavior for read perfor
|
|||
|
||||
- **`IAcLoggerDbContextBase.cs`** — Interface for log item DbSet.
|
||||
- **`AcLoggerDbContextBase.cs`** — Implementation with NoTracking default, optimized for log reads.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -15,7 +15,3 @@ EF Core DbContext base classes with automatic timestamp management, UTC conversi
|
|||
|---|---|
|
||||
| [`Users/`](Users/README.md) | User-specific DbContext with DbSets for User, Profile, Address, Company, UserToken, EmailMessage |
|
||||
| [`Loggers/`](Loggers/README.md) | Logger DbContext with NoTracking for read performance |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ User-specific EF Core DbContext definitions.
|
|||
- **`IAcUserDbContextBase.cs`** — Interface declaring DbSets for Users, Profiles, Addresses, Companies, UserTokens, EmailMessages.
|
||||
- **`AcUserDbContextBase.cs`** — Implementation with lazy loading, auto timestamps, and entity configurations.
|
||||
- **`IAcUserTokenDbContextBase.cs`** — Interface for UserToken DbSet access.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Address entity CRUD operations.
|
|||
|
||||
- **`IAcAddressDbSetBase.cs`** — Address DbSet interface.
|
||||
- **`AcAddressDbSetExtensions.cs`** — GetAddressById, UpdateAddress, RemoveAddress.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Company/ServiceProvider CRUD with profile and user-to-company relationship manag
|
|||
|
||||
- **`IAcCompanyDbSetBase.cs`** — Hierarchical interfaces with Profile and Address relations.
|
||||
- **`AcCompanyDbSetExtensions.cs`** — AddCompany, UpdateCompany, RemoveCompany, GetCompanyById, GetCompaniesByOwnerId. Handles profile and user-to-company relationships.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Log item DbSet interface.
|
|||
## Key Files
|
||||
|
||||
- **`IAcLogItemDbSetBase.cs`** — Interface for LogItem DbSet.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Email message querying and CRUD operations with sender/recipient/context filteri
|
|||
|
||||
- **`IAcEmailMessageDbSet.cs`** — EmailMessage DbSet interface.
|
||||
- **`AcEmailMessageDbSetExtension.cs`** — GetEmailMessageById, GetEmailMessagesByContextId/SenderId, filter by sender/recipient, AddEmailMessage, UpdateEmailMessage, RemoveEmailMessage.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Profile CRUD operations with address relationship support.
|
|||
|
||||
- **`IAcProfileDbSetBase.cs`** — Interface with Address dependency.
|
||||
- **`AcProfileDbSetExtensions.cs`** — GetProfileById, AddProfile, UpdateProfile, RemoveProfile.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,3 @@ Generic DbSet interfaces with extension method-based CRUD operations. Each entit
|
|||
| [`Companies/`](Companies/README.md) | Company CRUD with profile and user-to-company relations |
|
||||
| [`Messages/`](Messages/README.md) | Email message querying and CRUD |
|
||||
| [`Loggers/`](Loggers/README.md) | Log item DbSet interface |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,3 @@ User entity CRUD operations, authentication, and JWT token management via extens
|
|||
- **`AcUserTokenDbSetExtensions.cs`** — CreateUserToken, GetActiveUserToken, IsValidToken, DeactivateTokens, ChangePassword.
|
||||
- **`IAcUserChangePasswordDbSet.cs`** — Combined interface for password change operations.
|
||||
- **`IAcUserToCompanyDbSetBase.cs`** — UserToCompany mapping interface.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,3 @@ Database utility extensions for DTO conversion, read-only sessions, and transact
|
|||
- **`AcDbSessionExtension.cs`** — Session/SessionAsync for read-only operations with error logging.
|
||||
- **`AcDbTransactionExtension.cs`** — Transaction/TransactionAsync with auto-rollback on failure, OpenTransaction/CommitTransaction helpers.
|
||||
- **`AcDalExtension.cs`** — DAL-level mutex-locked session/transaction wrappers, UpdateSafe/UpdateSafeAsync for optimistic updates with optional callbacks.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ EF Core entity type configuration for Profile↔Address relationship.
|
|||
|
||||
- **`AcProfileEntityTypeConfigurations.cs`** — Default config mapping Profile to Address.
|
||||
- **`AcProfileEntityTypeBuilderExtensions.cs`** — BuildEntityToAddressRelation (one-to-one).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,3 @@ EF Core Fluent API configurations for entity relationships (one-to-one, many-to-
|
|||
|---|---|
|
||||
| [`Users/`](Users/README.md) | User↔Profile and User↔Company relationship configs |
|
||||
| [`Profiles/`](Profiles/README.md) | Profile↔Address relationship config |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ EF Core entity type configurations for User and Company relationships.
|
|||
|
||||
- **`AcUserEntityTypeConfigurations.cs`** — Default configs: User↔Profile (one-to-one), Company↔Profile with auto-include navigation.
|
||||
- **`AcUserEntityTypeBuilderExtensions.cs`** — BuildEntityToProfileRelation (cascade delete), BuildEntityToServiceProviderRelation (many-to-many via UsingEntity).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -24,7 +24,3 @@ Entity Framework Core data access layer with generic DAL pattern, session/transa
|
|||
| `Microsoft.EntityFrameworkCore.SqlServer` | SQL Server EF Core provider |
|
||||
| `MessagePack` | Serialization annotations |
|
||||
| `Newtonsoft.Json` | JSON support |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Server-side log item entity and interface, extending the client-side `AcLogItemC
|
|||
|
||||
- **`IAcLogItem.cs`** — Interface extending `IAcLogItemClient` and `IEntityInt`, adding a `LogHeaderId` property.
|
||||
- **`AcLogItem.cs`** — Entity class mapped to the `LogItem` database table with MessagePack serialization. Provides `Id` (auto-generated) and `LogHeaderId`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,3 @@ Server-side entity implementations extending `AyCode.Entities`. Currently contai
|
|||
| `AyCode.Entities` | `AcLogItemClient` base class |
|
||||
| `AyCode.Utils` | Shared utilities |
|
||||
| `MessagePack.Annotations` | `[MessagePackObject]`, `[Key]` for serialization |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base entity for physical addresses, storing geocoordinates and address
|
|||
## Key Files
|
||||
|
||||
- **`AcAddress.cs`** — Abstract class implementing `IAcAddress` with `Latitude`, `Longitude`, `AddressText`, and validity flags (`IsValid`, `IsHelper`). Uses a non-database-generated `Guid` primary key.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base entity for groups with public/private visibility. Implements `IGro
|
|||
## Key Files
|
||||
|
||||
- **`GroupBase.cs`** — Abstract class with `Id` (Guid), `IsPublic` flag, and `Created`/`Modified` timestamps. Provides constructors for creating groups with optional explicit IDs.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base entity for geographic locations with longitude, latitude, and an o
|
|||
## Key Files
|
||||
|
||||
- **`LocationBase.cs`** — Abstract class with `Id` (Guid), `Longitude`, `Latitude`, and `Address` properties. Provides constructors that auto-generate IDs or accept explicit ones.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Client-side log item entity used for structured logging. Serialized with Message
|
|||
## Key Files
|
||||
|
||||
- **`AcLogItemClient.cs`** — Implements `IAcLogItemClient` with fields for `AppType`, `LogLevel`, `ThreadId`, `CategoryName`, `CallerName`, `Text`, and exception details. Uses `[MessagePackObject]` serialization with explicit key indices.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Abstract base entities for email messaging, covering both messages and their rec
|
|||
|
||||
- **`AcEmailMessage.cs`** — Generic abstract class (`AcEmailMessage<TEmailRecipient>`) implementing `IAcEmailMessage`. Holds sender, context, subject, body text, email address, read status, and a list of recipients.
|
||||
- **`AcEmailRecipient.cs`** — Generic abstract class (`AcEmailRecipient<TEmailMessage>`) implementing `IAcEmailRecipient`. Links a recipient to an email message via `EmailMessageId` with navigation back to the message entity.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base entity for user/company profiles with name, contact info, and a li
|
|||
## Key Files
|
||||
|
||||
- **`AcProfile.cs`** — Generic abstract class (`AcProfile<TAddress>`) implementing `IAcProfile`. Contains `Name`, `FirstName`, `LastName`, `EmailAddress`, `Description`, `ThumbnailUrl`, and a foreign-key relationship to an `Address` entity. Provides `SetAddress()` and `GetFullName()` helpers with language-aware name ordering.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -34,7 +34,3 @@ Abstract base entity implementations for the AyCode domain model. All entities a
|
|||
|---|---|
|
||||
| `AyCode.Interfaces` | Interface contracts this project implements |
|
||||
| `MessagePack.Annotations` | `[MessagePackObject]` on `AcLogItemClient` |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base entity for companies/service providers, linking owners, profiles,
|
|||
## Key Files
|
||||
|
||||
- **`AcCompany.cs`** — Generic abstract class (`AcCompany<TUser, TUserToCompany, TProfile, TAddress>`) implementing `IAcCompany`. Holds `Name`, `OwnerId`, `CommissionPercent`, `AffiliateId`, `ReferralId`, and navigation properties to `Profile`, `Users`, and `UserToServiceProviders`. Provides `SetProfile()`, `HasUser()`, and `AddUser()` helper methods.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Abstract base entities for user accounts, authentication tokens, and user-to-com
|
|||
- **`AcUser.cs`** — Generic abstract class (`AcUser<TProfile, TCompany, TUserToServiceProvider, TProfileAddress>`) implementing `IAcUser`. Holds email, password, phone, refresh token, affiliate/referral IDs, and navigation properties to `Profile`, `ServiceProviders`, and `UserToServiceProviders`.
|
||||
- **`AcUserTokenBase.cs`** — Abstract class for user verification tokens with `Token`, `IsActive`, `TokenSent`, and `TokenExpiration` fields. Uses an auto-incremented `int` primary key.
|
||||
- **`AcUserToCompany.cs`** — Generic abstract class (`AcUserToCompany<TUser, TCompany>`) implementing `IAcUserToCompany`. Many-to-many join entity linking users to companies with a `Permissions` field.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Server-side login interfaces defining contracts for login DTOs, authenticated se
|
|||
- **`IAcLoginDtoBase.cs`** — Empty marker interface for login DTO types.
|
||||
- **`IAcLoggedInModelBase.cs`** — Generic interface for authenticated session state, exposing `IsLoggedIn`, `LoggedInUser`, `AccessToken`, and `LoginErrorCode`, with methods for login and logout.
|
||||
- **`IAcLoginServiceServer.cs`** — Server login service interface with `Login`/`LoginAsync` and `UpdatePassword` methods, generic over user, token, profile, and company types.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -18,7 +18,3 @@ Server-side interface contracts extending `AyCode.Interfaces`. Defines authentic
|
|||
| `AyCode.Core.Server` | Server-side core |
|
||||
| `AyCode.Entities` | Entity base classes |
|
||||
| `AyCode.Entities.Server` | Server-side entities |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Data transfer object interface for address data, defining the minimal address sh
|
|||
## Key Files
|
||||
|
||||
- **`IAcAddressDtoBase.cs`** — Base address DTO interface with `IsValid`, `IsHelper`, `Latitude`, `Longitude`, and `AddressText` properties. Extends `IEntityGuid`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Interfaces for address entities, including the full address model, foreign key c
|
|||
- **`IAcAddress.cs`** — Full address interface combining `IAcAddressDtoBase` with `ITimeStampInfo`.
|
||||
- **`IAcAddressRelation.cs`** — Generic navigation property interface for entities that hold an `Address` reference.
|
||||
- **`IAcAddressForeignKey.cs`** — Foreign key contract exposing `AddressId` (Guid), extends `IForeignKey`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,3 @@ Core entity interfaces that define primary key contracts and soft-delete behavio
|
|||
- **`IAcSoftRemoveEntity.cs`** — Adds a `Deleted` boolean flag for soft-delete support.
|
||||
- **`IAcSoftRemoveEntityInt.cs`** — Soft-delete entity with `int` key.
|
||||
- **`IAcSoftRemoveEntityGuid.cs`** — Soft-delete entity with `Guid` key.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Interface for entities that support a comment/note field.
|
|||
## Key Files
|
||||
|
||||
- **`IEntityComment.cs`** — Defines a single `Comment` string property for attaching comments to entities.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Interface defining message type enumerations used across the messaging system.
|
|||
## Key Files
|
||||
|
||||
- **`IMessageTypes.cs`** — Contains the `IMessageTypes` interface with a nested `MessageTypesEnum` enum placeholder.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Interface for group entities with identity and timestamp support.
|
|||
## Key Files
|
||||
|
||||
- **`IGroupBase.cs`** — Base group interface extending `IEntityGuid` and `ITimeStampInfo`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Interface for location entities providing geographic coordinates and address tex
|
|||
## Key Files
|
||||
|
||||
- **`ILocationBase.cs`** — Defines `Longitude`, `Latitude`, and `Address` properties. Extends `IEntityGuid`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Interfaces for authentication and login service contracts, covering login state,
|
|||
- **`IAcLoginServiceBase.cs`** — Base login service with `IsLoggedIn` and `LoggedInUser` properties, generic over user/profile/company types.
|
||||
- **`IAcLoginServiceCommon.cs`** — Extends the base with `Logout`, `Registration`, `ChangePassword`, and `ForgotPassword` methods (sync and async).
|
||||
- **`IAcLoginServiceClient.cs`** — Client-side login service marker interface extending `IAcLoginServiceCommon`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Interfaces for media-related properties such as thumbnail URLs and user media id
|
|||
- **`IMediaInfo.cs`** — Composite interface combining `IMediaThumbnailUrl` and `IMediaUserMediaId`.
|
||||
- **`IMediaThumbnailUrl.cs`** — Defines an optional `ThumbnailUrl` string property.
|
||||
- **`IMediaUserMediaId.cs`** — Defines an optional `UserMediaId` (Guid?) property.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,3 @@ Interfaces for the email/messaging system, covering message entities, recipients
|
|||
- **`IAcEmailRecipientsRelation.cs`** — Navigation property exposing a `List<TEmailRecipient>` collection.
|
||||
- **`IAcEmailMessageForeignKey.cs`** — Foreign key contract for `EmailMessageId` (generic and Guid variants).
|
||||
- **`IAcMessageSenderService.cs`** — Service interface with `SendMessageAsync` for dispatching messages.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ DTO interfaces for profile data, defining name fields and the base profile DTO s
|
|||
- **`IAcFullName.cs`** — Defines `FullName` (read-only), `FirstName`, and `LastName` properties.
|
||||
- **`IAcProfileName.cs`** — Extends `IAcFullName` with a `Name` property.
|
||||
- **`IAcProfileDtoBase.cs`** — Base profile DTO with `EmailAddress`, `Description`, media info, and address foreign key. Generic variant adds an address relation.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Interfaces for user/company profile entities, including navigation relations and
|
|||
- **`IAcProfile.cs`** — Full profile interface with `GetFullName` and `SetAddress` methods, extends `IAcProfileDtoBase<TAddress>` and `ITimeStampInfo`.
|
||||
- **`IAcProfileRelation.cs`** — Generic navigation property for entities holding a `Profile` reference.
|
||||
- **`IAcProfileForeignKey.cs`** — Foreign key contract exposing `ProfileId` (Guid), extends `IForeignKey`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -40,7 +40,3 @@ Domain interface contracts for the AyCode platform. Defines the shape of entitie
|
|||
| 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.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,3 @@ Interfaces for company/service provider entities, covering base properties, prof
|
|||
- **`IAcCompany.cs`** — Multiple generic variants linking a company to its profile, address, and user collections.
|
||||
- **`IAcCompanyRelation.cs`** — Navigation property for entities holding `ServiceProviders` and `UserToServiceProviders` lists.
|
||||
- **`IAcCompanyForeignKey.cs`** — Foreign key contract exposing `ServiceProviderId` (Guid).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Interface for secure key-value storage operations (save, get, delete, clear).
|
|||
## Key Files
|
||||
|
||||
- **`ISecureStorageHandler.cs`** — Async methods: `SaveToSecureStorageAsync`, `GetFromSecureStorageAsync`, `DeleteFromSecureStorageAsync`, and `ClearAllSecureStorageAsync`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,3 @@ Interfaces for entity timestamp tracking (created/modified) and a marker to disa
|
|||
- **`ITimeStampModified.cs`** — Defines a `Modified` DateTime property.
|
||||
- **`ITimeStampInfo.cs`** — Composite interface combining `ITimeStampCreated` and `ITimeStampModified`.
|
||||
- **`ITimeStampDisableAutoSet.cs`** — Marker interface to opt out of automatic timestamp population.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ DTO interfaces for user data at different detail levels -- minimal, base, and de
|
|||
- **`IAcUserDtoMinBase.cs`** — Minimal user DTO with `AffiliateId`. Generic variant adds a profile relation.
|
||||
- **`IAcUserDtoBase.cs`** — Base user DTO extending the minimal DTO. Generic variants add profile and company relations.
|
||||
- **`IAcUserDtoDetailBase.cs`** — Detailed user DTO combining `IAcUserBase` with DTO base interfaces. Generic variants add profile, company, and address type parameters.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,3 @@ Interfaces for user entities, covering base properties, authentication fields, c
|
|||
- **`IAcUserToServiceProviderRelation.cs`** — Relation linking a user to a service provider.
|
||||
- **`IAcUserModelDtoMinBase.cs`** — Minimal user model DTO marker extending `IAcModelDtoBase`.
|
||||
- **`IAcUserForeignKey.cs`** — Foreign key contract exposing `UserId` (Guid).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ Reflection-based infrastructure for dynamically dispatching method calls by mess
|
|||
- **`AcMethodInfoModel.cs`** — Wraps a `MethodInfo` and its `TagAttribute` with cached parameter metadata.
|
||||
- **`AcDynamicMethodCallModel.cs`** — Binds an object instance to its attributed methods, using a static `ConcurrentDictionary` and `FrozenDictionary` cache keyed by message tag. Reflection runs once per type.
|
||||
- **`AcDynamicMethodRegistry.cs`** — Registry with lazy method lookup across multiple registered instances. Caches discovered methods statically by message tag and resolves instances per request.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Server-side implementation of the logged-in session model, managing user authent
|
|||
## Key Files
|
||||
|
||||
- **`AcLoggedInModelServer.cs`** — Generic implementation of `IAcLoggedInModelBase`. Tracks `LoggedInUser`, `AccessToken`, and `LoginErrorCode`, with `AddLoggedInUser` and `Logout` methods.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -31,7 +31,3 @@ Server-side models: authentication state and dynamic method dispatch for SignalR
|
|||
| `AyCode.Interfaces.Server` | `IAcLoggedInModelBase` |
|
||||
| `AyCode.Models` | Shared models |
|
||||
| `AyCode.Services` | `TagAttribute` for SignalR method tagging |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Enumerations for messaging-related types used across the application models.
|
|||
|
||||
- **`MessageContentType.cs`** — Defines content types for messages: Text, Image, Video, Audio, File, Location, Contact, Sticker, Gif, VoiceNote, System.
|
||||
- **`MessageTypesEnum.cs`** — Defines message delivery channels: email (1), sms (2), push (3), chat (4).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Placeholder namespace for message models. The `EmailMessage` class is currently
|
|||
## Key Files
|
||||
|
||||
- **`EmailMessage.cs`** — Contains a commented-out `EmailMessage` class (with Subject and HtmlContent properties) that previously extended `NoticeBase`. Currently inactive.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -35,7 +35,3 @@ Shared DTOs (Data Transfer Objects) and view models for the AyCode platform. Bri
|
|||
| `AyCode.Core` | Core types |
|
||||
| `AyCode.Entities` | Entity base classes for DTO-entity mapping |
|
||||
| `AyCode.Interfaces` | Interface contracts implemented by DTOs |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,3 @@ Abstract base DTOs for user data transfer, including minimal, standard, and deta
|
|||
- **`AcPasswordDtoBase.cs`** — Base class for password operations with a `NewPassword` property.
|
||||
- **`AcChangePasswordDto.cs`** — Extends `AcPasswordDtoBase` with `UserId` and `OldPassword` for password change requests.
|
||||
- **`AcForgotPasswordDto.cs`** — Extends `AcPasswordDtoBase` with `Email` for forgot-password flows.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Abstract base for login service integration tests.
|
|||
## Key Files
|
||||
|
||||
- **`AcLoginServiceServerTestBase.cs`** — 10 generic type parameters. Tests: RegisterUser (create + validate + cleanup), LoginUser (valid, wrong email, wrong password with error codes), ChangePassword (change + verify + restore).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,3 @@ Comprehensive server-side tests for SignalR communication, DataSource operations
|
|||
|
||||
- **`TestLogger.cs`** — Re-exports TestLogger from AyCode.Core.Tests.
|
||||
- **`InvokeMethodExtensionTests.cs`** — Tests MethodInfo.InvokeMethod: sync, async Task<T> unwrapping, Task.FromResult<T> (production bug fix), non-generic Task, complex objects.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,3 @@ Full SignalR client→hub→service test infrastructure with testable components
|
|||
| Folder | Purpose |
|
||||
|---|---|
|
||||
| [`SignalRDatasources/`](SignalRDatasources/README.md) | DataSource CRUD and collection tests |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -24,7 +24,3 @@ DataSource CRUD, collection, tracking, and filter tests. Tested with List and Ac
|
|||
### Test DataSources
|
||||
- **`TestOrderItemListDataSource.cs`** — DataSource with List<TestOrderItem>.
|
||||
- **`TestOrderItemObservableDataSource.cs`** — DataSource with AcObservableCollection<TestOrderItem>.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Server-side email delivery via SendGrid.
|
|||
## Key Files
|
||||
|
||||
- **`AcEmailServiceServer.cs`** — Implements `IAcEmailServiceServer`. Uses `SendGridClient` to send templated emails. Methods: `SendLostPasswordEmailAsync()` (password reset with token), `SendRegistrationEmailAsync()` (confirmation with token).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ Server-side login service with JWT token management.
|
|||
## Key Files
|
||||
|
||||
- **`AcLoginServiceServer.cs`** — Heavily generic class extending `AcLoginServiceBase`, implementing `IAcLoginServiceServer`. Full authentication flow: `Login()`, `Logout()`, `Registration()`, `ChangePassword()`, `ForgotPassword()`. JWT methods: `GenerateAccessToken()`, `GenerateRefreshToken()`, `GetPrincipalFromExpiredToken()`. Uses DAL for database access.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -25,7 +25,3 @@ Server-side service implementations: JWT authentication, SendGrid email delivery
|
|||
| `Microsoft.AspNetCore.SignalR.*` | SignalR server |
|
||||
| `Microsoft.AspNetCore.Cryptography.KeyDerivation` | Password hashing |
|
||||
| `Microsoft.AspNetCore.Authentication.JwtBearer` | JWT auth (transitive) |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -20,7 +20,3 @@ Server-side SignalR hub infrastructure: hub base class, session management, data
|
|||
### Utilities
|
||||
- **`ExtensionMethods.cs`** — `InvokeMethod()` — invokes methods and unwraps `Task`/`Task<T>`/`ValueTask` results.
|
||||
- **`TrackingItemHelpers.cs`** — Deep clone helpers: `JsonClone<T>()`, `ReflectionClone<T>()`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,3 @@ MSTest project for service layer testing. Focuses on SignalR message serializati
|
|||
## Key Files (Root)
|
||||
|
||||
- **`MSTestSettings.cs`** — Assembly-level parallel test execution (MethodLevel scope).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,3 @@ SignalR message serialization and full round-trip tests.
|
|||
## Key Files
|
||||
|
||||
- **`PostJsonDataMessageTests.cs`** — Full pipeline test: client creates message → binary serialize → server deserialize → parameter extract → service result → response create → binary response → client deserialize → type convert. Covers int, string, bool with [DataRow].
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -9,7 +9,3 @@ Remote log writers for sending log items over HTTP, SignalR, or to the browser c
|
|||
- **`AcSignaRClientLogItemWriter.cs`** — Sends `AcLogItemClient` items to a SignalR hub. Manages `HubConnection` lifecycle with `StartConnection()`/`StopConnection()`.
|
||||
|
||||
All three implement `IAcLogWriterClientBase`.
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ Base and client-side login service implementations.
|
|||
|
||||
- **`AcLoginServiceBase.cs`** — Abstract generic base implementing `IAcLoginServiceBase`. Provides `IsLoggedIn` and `LoggedInUser` properties. Heavily constrained generics (TUser, TProfile, TCompany, TUserToServiceProvider, TProfileAddress).
|
||||
- **`AcLoginServiceClient.cs`** — Client-side login service extending `AcLoginServiceBase`, implementing `IAcLoginServiceClient`. Provides stubs for `Login`, `Logout`, `Registration`, `ChangePassword`, `ForgotPassword` (sync + async variants).
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
|
|
@ -21,7 +21,3 @@ Shared service implementations: SignalR communication (custom binary protocol),
|
|||
| `Microsoft.AspNetCore.SignalR.Client` | SignalR client |
|
||||
| `Microsoft.AspNetCore.SignalR.Common` | `IHubProtocol` for custom binary protocol |
|
||||
| `Microsoft.AspNetCore.Authentication.JwtBearer` | JWT authentication |
|
||||
|
||||
---
|
||||
|
||||
> **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.
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue