private static async Task <bool> ImportCategoryAsync ( PluginsDatabaseContext db, IdeaPluginCategory category ) { var dbCategory = await db.Categories.FirstOrDefaultAsync(c => c.Name == category.Name); if (dbCategory is null) { dbCategory = category.ToEntity(); db.Categories.Add(dbCategory); } else { var newValues = category.ToEntity(); newValues.ID = dbCategory.ID; var existingEntry = db.Entry(dbCategory); existingEntry.CurrentValues.SetValues(newValues); if (existingEntry.State == EntityState.Unchanged) { return(false); } } return(true); }
private static async Task <bool> ImportPluginReleaseAsync ( PluginsDatabaseContext db, IdeaPlugin pluginRelease ) { var dbPlugin = await db.Plugins.FirstOrDefaultAsync(p => p.PluginID == pluginRelease.ID); var dbRelease = dbPlugin.Releases.FirstOrDefault(r => r.Version == pluginRelease.Version); if (dbRelease is null) { dbRelease = pluginRelease.ToReleaseEntity(dbPlugin); dbPlugin.Releases.Add(dbRelease); } else { var newValues = pluginRelease.ToReleaseEntity(dbPlugin); newValues.ID = dbRelease.ID; var existingEntry = db.Entry(dbRelease); existingEntry.CurrentValues.SetValues(newValues); if (existingEntry.State == EntityState.Unchanged) { return(false); } } return(true); }
/// <summary> /// Configures the services of the application. /// </summary> /// <param name="services">The service container.</param> public void ConfigureServices(IServiceCollection services) { var content = new ApplicationContentService(); services .AddMvc(o => o.EnableEndpointRouting = false) .SetCompatibilityVersion(CompatibilityVersion.Version_3_0) .AddXmlSerializerFormatters(); services.AddSingleton(content); services.AddDbContextPool <PluginsDatabaseContext> ( options => PluginsDatabaseContext.ConfigureDefaultOptions(options).UseNpgsql(content.ConnectionString) ); }
/// <summary> /// Initializes a new instance of the <see cref="Icon"/> class. /// </summary> /// <param name="database">The database.</param> public Icon(PluginsDatabaseContext database) { _database = database; }
/// <summary> /// Initializes a new instance of the <see cref="Search"/> class. /// </summary> /// <param name="database">The database context.</param> public Search(PluginsDatabaseContext database) { _database = database; }
/// <summary> /// Initializes a new instance of the <see cref="List"/> class. /// </summary> /// <param name="database">The database context.</param> public List(PluginsDatabaseContext database) { _database = database; }
private static async Task <int> Main(string[] args) { var parsingResult = Parser.Default.ParseArguments <ProgramOptions>(args); if (parsingResult is Parsed <ProgramOptions> success) { Options = success.Value; } else { return(1); } if (!Directory.Exists(Options.InputFolder)) { Console.ForegroundColor = ConsoleColor.Red; await Console.Error.WriteLineAsync("Input directory not found."); return(1); } var repoFilePath = Path.Combine(Options.InputFolder, "plugins", "repository.xml"); if (!File.Exists(repoFilePath)) { Console.ForegroundColor = ConsoleColor.Red; await Console.Error.WriteLineAsync("No repository information found in the input folder."); return(1); } if (!File.Exists(Options.AuthenticationFile)) { Console.ForegroundColor = ConsoleColor.Red; await Console.Error.WriteLineAsync("Authentication file not found."); return(1); } if (!Passfile.TryParse(File.ReadAllText(Options.AuthenticationFile), out var passfile)) { Console.ForegroundColor = ConsoleColor.Red; await Console.Error.WriteLineAsync("Could not parse authentication file."); return(1); } var deserializer = new XmlSerializer(typeof(IdeaPluginRepository)); IdeaPluginRepository repository; await using (var repoFile = File.OpenRead(repoFilePath)) { repository = (IdeaPluginRepository)deserializer.Deserialize(repoFile); } await using (var services = new ServiceCollection() .AddDbContextPool <PluginsDatabaseContext> ( options => PluginsDatabaseContext .ConfigureDefaultOptions(options) .UseNpgsql(passfile.ConnectionString) ) .BuildServiceProvider()) { await ImportRepositoryAsync(services, repository); } return(0); }
/// <summary> /// Initializes a new instance of the <see cref="PluginManager"/> class. /// </summary> /// <param name="database">The database context.</param> public PluginManager(PluginsDatabaseContext database) { _database = database; }