< Summary

Information
Class: Chronicis.Api.Data.ChronicisDbContextFactory
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Data/ChronicisDbContextFactory.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 13
Coverable lines: 13
Total lines: 49
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CreateDbContext(...)0%2040%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Data/ChronicisDbContextFactory.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using Microsoft.EntityFrameworkCore.Design;
 3
 4namespace Chronicis.Api.Data
 5{
 6    /// <summary>
 7    /// Design-time factory for creating ChronicisDbContext during migrations.
 8    /// This ensures EF Core tools can create the context without running the full application.
 9    ///
 10    /// Connection string resolution (in order of priority):
 11    /// 1. Environment variable: CHRONICIS_CONNECTION_STRING
 12    /// 2. local.settings.json: ConnectionStrings:ChronicisDb
 13    /// 3. Fallback to localhost SQL Server (for local development)
 14    /// </summary>
 15    public class ChronicisDbContextFactory : IDesignTimeDbContextFactory<ChronicisDbContext>
 16    {
 17        public ChronicisDbContext CreateDbContext(string[] args)
 18        {
 019            var optionsBuilder = new DbContextOptionsBuilder<ChronicisDbContext>();
 20
 21            // Try to get connection string from environment variable first
 022            var connectionString = Environment.GetEnvironmentVariable("CHRONICIS_CONNECTION_STRING");
 23
 24            // If not found, try to load from local.settings.json
 025            if (string.IsNullOrEmpty(connectionString))
 26            {
 027                var configuration = new ConfigurationBuilder()
 028                    .SetBasePath(Directory.GetCurrentDirectory())
 029                    .AddJsonFile("local.settings.json", optional: true, reloadOnChange: false)
 030                    .Build();
 31
 032                connectionString = configuration.GetConnectionString("ChronicisDb");
 33            }
 34
 35            // Fallback for local development (no secrets in source code)
 036            if (string.IsNullOrEmpty(connectionString))
 37            {
 38                // This fallback assumes local SQL Server with integrated security
 39                // Developers should set up local.settings.json or environment variable
 040                connectionString = "Server=localhost,1433;Database=Chronicis;Integrated Security=True;TrustServerCertifi
 041                Console.WriteLine("WARNING: Using fallback connection string. Set CHRONICIS_CONNECTION_STRING or configu
 42            }
 43
 044            optionsBuilder.UseSqlServer(connectionString);
 45
 046            return new ChronicisDbContext(optionsBuilder.Options);
 47        }
 48    }
 49}