using ZB.MOM.WW.CBDD.Bson; using ZB.MOM.WW.CBDD.Core; using ZB.MOM.WW.CBDD.Core.Collections; using ZB.MOM.WW.CBDD.Core.Compression; using ZB.MOM.WW.CBDD.Core.Indexing; using ZB.MOM.WW.CBDD.Core.Metadata; using ZB.MOM.WW.CBDD.Core.Storage; namespace ZB.MOM.WW.CBDD.Shared; /// /// Test context with manual collection initialization /// (Source Generator will automate this in the future) /// public partial class TestDbContext : DocumentDbContext { /// /// Gets or sets the AnnotatedUsers. /// public DocumentCollection AnnotatedUsers { get; set; } = null!; /// /// Gets or sets the Orders. /// public DocumentCollection Orders { get; set; } = null!; /// /// Gets or sets the TestDocuments. /// public DocumentCollection TestDocuments { get; set; } = null!; /// /// Gets or sets the OrderDocuments. /// public DocumentCollection OrderDocuments { get; set; } = null!; /// /// Gets or sets the ComplexDocuments. /// public DocumentCollection ComplexDocuments { get; set; } = null!; /// /// Gets or sets the Users. /// public DocumentCollection Users { get; set; } = null!; /// /// Gets or sets the ComplexUsers. /// public DocumentCollection ComplexUsers { get; set; } = null!; /// /// Gets or sets the AutoInitEntities. /// public DocumentCollection AutoInitEntities { get; set; } = null!; /// /// Gets or sets the People. /// public DocumentCollection People { get; set; } = null!; /// /// Gets or sets the PeopleV2. /// public DocumentCollection PeopleV2 { get; set; } = null!; /// /// Gets or sets the Products. /// public DocumentCollection Products { get; set; } = null!; /// /// Gets or sets the IntEntities. /// public DocumentCollection IntEntities { get; set; } = null!; /// /// Gets or sets the StringEntities. /// public DocumentCollection StringEntities { get; set; } = null!; /// /// Gets or sets the GuidEntities. /// public DocumentCollection GuidEntities { get; set; } = null!; /// /// Gets or sets the CustomKeyEntities. /// public DocumentCollection CustomKeyEntities { get; set; } = null!; /// /// Gets or sets the AsyncDocs. /// public DocumentCollection AsyncDocs { get; set; } = null!; /// /// Gets or sets the SchemaUsers. /// public DocumentCollection SchemaUsers { get; set; } = null!; /// /// Gets or sets the VectorItems. /// public DocumentCollection VectorItems { get; set; } = null!; /// /// Gets or sets the GeoItems. /// public DocumentCollection GeoItems { get; set; } = null!; // Source Generator Feature Tests /// /// Gets or sets the DerivedEntities. /// public DocumentCollection DerivedEntities { get; set; } = null!; /// /// Gets or sets the ComputedPropertyEntities. /// public DocumentCollection ComputedPropertyEntities { get; set; } = null!; /// /// Gets or sets the AdvancedCollectionEntities. /// public DocumentCollection AdvancedCollectionEntities { get; set; } = null!; /// /// Gets or sets the PrivateSetterEntities. /// public DocumentCollection PrivateSetterEntities { get; set; } = null!; /// /// Gets or sets the InitSetterEntities. /// public DocumentCollection InitSetterEntities { get; set; } = null!; // Circular Reference Tests /// /// Gets or sets the Employees. /// public DocumentCollection Employees { get; set; } = null!; /// /// Gets or sets the CategoryRefs. /// public DocumentCollection CategoryRefs { get; set; } = null!; /// /// Gets or sets the ProductRefs. /// public DocumentCollection ProductRefs { get; set; } = null!; // Nullable String Id Test (UuidEntity scenario with inheritance) /// /// Gets or sets the MockCounters. /// public DocumentCollection MockCounters { get; set; } = null!; // Temporal Types Test (DateTimeOffset, TimeSpan, DateOnly, TimeOnly) /// /// Gets or sets the TemporalEntities. /// public DocumentCollection TemporalEntities { get; set; } = null!; /// /// Initializes a new instance of the class. /// /// The database path. public TestDbContext(string databasePath) : this(databasePath, PageFileConfig.Default, CompressionOptions.Default) { } /// /// Initializes a new instance of the class. /// /// The database path. /// The compression options. public TestDbContext(string databasePath, CompressionOptions compressionOptions) : this(databasePath, PageFileConfig.Default, compressionOptions) { } /// /// Initializes a new instance of the class. /// /// The database path. /// The page file configuration. public TestDbContext(string databasePath, PageFileConfig pageFileConfig) : this(databasePath, pageFileConfig, CompressionOptions.Default) { } /// /// Initializes a new instance of the class. /// /// The database path. /// The page file configuration. /// The compression options. /// The maintenance options. public TestDbContext( string databasePath, PageFileConfig pageFileConfig, CompressionOptions? compressionOptions, MaintenanceOptions? maintenanceOptions = null) : base(databasePath, pageFileConfig, compressionOptions, maintenanceOptions) { } /// protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(); modelBuilder.Entity().ToCollection("users"); modelBuilder.Entity().ToCollection("complex_users"); modelBuilder.Entity().ToCollection("auto_init_entities"); modelBuilder.Entity().ToCollection("people_collection").HasIndex(p => p.Age); modelBuilder.Entity().ToCollection("peoplev2_collection").HasIndex(p => p.Age); modelBuilder.Entity().ToCollection("products_collection").HasIndex(p => p.Price); modelBuilder.Entity().HasKey(e => e.Id); modelBuilder.Entity().HasKey(e => e.Id); modelBuilder.Entity().HasKey(e => e.Id); modelBuilder.Entity().HasKey(e => e.Code); modelBuilder.Entity().ToCollection("async_docs"); modelBuilder.Entity().ToCollection("schema_users").HasKey(e => e.Id); modelBuilder.Entity(); modelBuilder.Entity(); modelBuilder.Entity(); modelBuilder.Entity() .ToCollection("vector_items") .HasVectorIndex(x => x.Embedding, dimensions: 3, metric: VectorMetric.L2, name: "idx_vector"); modelBuilder.Entity() .ToCollection("geo_items") .HasSpatialIndex(x => x.Location, name: "idx_spatial"); modelBuilder.Entity() .HasKey(x => x.Id) .HasConversion(); // Source Generator Feature Tests modelBuilder.Entity().ToCollection("derived_entities"); modelBuilder.Entity().ToCollection("computed_property_entities"); modelBuilder.Entity().ToCollection("advanced_collection_entities"); modelBuilder.Entity().ToCollection("private_setter_entities"); modelBuilder.Entity().ToCollection("init_setter_entities"); // Circular Reference Tests modelBuilder.Entity().ToCollection("employees"); modelBuilder.Entity().ToCollection("category_refs"); modelBuilder.Entity().ToCollection("product_refs"); // Nullable String Id Test (UuidEntity scenario) modelBuilder.Entity().ToCollection("mock_counters").HasKey(e => e.Id); // Temporal Types Test modelBuilder.Entity().ToCollection("temporal_entities").HasKey(e => e.Id); } /// /// Executes ForceCheckpoint. /// public void ForceCheckpoint() { Engine.Checkpoint(); } /// /// Gets or sets the Storage. /// public StorageEngine Storage => Engine; }