Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }