{"path":"NexusReader.Domain/Entities/Ebook.cs","purpose":"Defines the domain entity representing an uploaded or owned e-book, including metadata, relationships (Author, NexusUser), tenancy and ingestion/readiness status for application use and persistence.","classification":{"role":"entity","layer":"domain","confidence":0.9,"evidence":["Domain/entity pattern","Domain path heuristic","Namespace NexusReader.Domain.Entities","Class annotated with [Key], [ForeignKey], and data annotations for persistence"]},"className":"Ebook","methods":[],"types":[{"name":"Ebook","kind":"entity","line":9,"purpose":"Represents an e-book record stored in the domain/data model with metadata, relationships and ingestion/readiness state.","fields":[{"name":"Id","type":"Guid","required":true,"line":11,"description":"Primary key; initialized to a new Guid by default"},{"name":"Title","type":"string","required":true,"line":14,"description":"Ebook title (max length 255)"},{"name":"AuthorId","type":"int","required":true,"line":18,"description":"Foreign key referencing Author"},{"name":"Author","type":"Author (virtual)","required":true,"line":21,"description":"Navigation property to Author entity (ForeignKey AuthorId)"},{"name":"FilePath","type":"string","required":true,"line":24,"description":"Filesystem or storage path to the ebook file"},{"name":"CoverUrl","type":"string?","required":false,"line":27,"description":"Optional URL for cover image"},{"name":"TenantId","type":"string","required":true,"line":29,"description":"Tenant identifier (max length 128), default 'global' for multitenancy"},{"name":"AddedDate","type":"DateTime","required":true,"line":33,"description":"UTC timestamp when ebook was added; defaults to DateTime.UtcNow"},{"name":"LastReadDate","type":"DateTime?","required":false,"line":35,"description":"Optional timestamp of last read"},{"name":"Progress","type":"double","required":true,"line":37,"description":"Reading progress (numeric), defaults to 0"},{"name":"LastChapter","type":"string?","required":false,"line":39,"description":"Optional title/name of last chapter read (max length 255)"},{"name":"LastChapterIndex","type":"int","required":true,"line":42,"description":"Index of last chapter read, defaults to 0"},{"name":"Description","type":"string?","required":false,"line":44,"description":"Optional descriptive text for the ebook"},{"name":"IsReadyForReading","type":"bool","required":true,"line":50,"description":"Flag indicating AI ingestion readiness / Knowledge Units generated; defaults to false"},{"name":"UserId","type":"string","required":true,"line":53,"description":"Identifier of owning/uploading user (required)"},{"name":"User","type":"NexusUser?","required":false,"line":56,"description":"Optional navigation property to NexusUser (ForeignKey UserId)"}]}],"serviceRegistrations":[],"startupActions":[],"dependencies":["NexusReader.Domain/Entities/Author.cs","NexusReader.Domain/Entities/NexusUser.cs"],"patterns":["Entity","ORM (EntityFramework Core) mapping via DataAnnotations"],"domainConcepts":["Ebook","Author","NexusUser","Tenancy","AI ingestion / Knowledge Units"],"keyDetails":"POCO entity with EF Core data annotations: primary key (Id), required fields, max length constraints, foreign keys to Author and NexusUser, defaults for Id, AddedDate, TenantId and Progress, and a readiness flag (IsReadyForReading) used to indicate AI processing completion.","orchestrationMethods":[],"typedContracts":[{"name":"Ebook","kind":"entity","line":9,"fieldCount":16,"evidencePaths":["NexusReader.Domain/Entities/Ebook.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"Ebook","line":9,"summary":"entity with 16 fields.","confidence":0.8,"evidencePaths":["NexusReader.Domain/Entities/Ebook.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"ae3a693d3ce6fe0aaa43b2d786848e242a95ae7074f732dbf5f887a93d80f0b8","sourceByteSize":1583,"analyzedAt":"2026-05-23T16:20:19.395Z","technology":"dotnet"}}