public void CreateUniverse() { NameItemDialog dialog = new NameItemDialog(DialogOwner, "New Universe"); bool? result = dialog.ShowDialog(); if (result.HasValue && result.Value) { Universe uni = new Universe(_connection); uni.Name = dialog.UserInput; if (Universes.Count == 0) { uni.SortIndex = 0; } else { uni.SortIndex = Universes.Max(i => i.Model.SortIndex) + 1; } uni.Create(); UniverseViewModel vm = new UniverseViewModel(uni, this); Universes.Add(vm); if (Universes.Count == 1) { SelectedUniverse = vm; } } }
public void Inner_grouping() { /* * * Step1: GROUP BY (up to) THIS ┐ * ˅ * ImmutableArray[ Planet, Continent, Country, City, Street, Building ] * Grouping[ ImmutableArray[ Planet, Continent, Country, City, Street ], Building ] * * Tuple[ Planet, Continent, Country, City, Grouping[ Street, Building ] ] * Tuple[ Planet, Continent, Country, Tuple[ City, Grouping[ Street, Building ] ] ] * Tuple[ Planet, Tuple[ Continent, Country ], Tuple[ City, Grouping[ Street, Building ] ] ] * * Step2: GROUP BY THIS ┐ * ˅ * Tuple[ Planet, Tuple[ Continent, Country ], Tuple[ City, Grouping[ Street, Building ] ] ] * Grouping[ Tuple[ Planet, Tuple[ Continent, Country ], Tuple[ City, Grouping[ Street, Building ] ] ] ] * Tuple[ Planet, Grouping[ Tuple[ Continent, Country ], Tuple[ City, Grouping[ Street, Building ] ] ] ] * * Tuple< * Planet, * IGrouping< * Tuple<Continent, Country>, * Tuple< * City, * IGrouping<Street, Building> * > * > * > * * GroupBy Tuple(Item1..Item5) => Item6 * Tuple ( * LiftOutOfKey Item1 * Tuple( LiftOutOfKey Item2, LiftOutOfKey Item3 ) * Tuple( LiftOutOfKey Item4, Grouping (LiftOutOfKey Item5) ) * ) * * GroupBy (Tuple (Item1, Item2) => Item3) * Tuple( LiftOutOfKey Item1, Grouping LiftOutOfKey Item2) */ var source = Universe.Create(); var step1 = source.GroupBy( x => Tuple.Create(x.Item1, x.Item2, x.Item3, x.Item4, x.Item5), x => x.Item6, (k, g) => Tuple.Create( k.Item1, Tuple.Create(k.Item2, k.Item3), Tuple.Create(k.Item4, Grouping(k.Item5, g)) ) ); var step2 = step1.GroupBy( x => Tuple.Create(x.Item1, x.Item2), x => x.Item3, (k, g) => Tuple.Create(k.Item1, Grouping(k.Item2, g)) ); }
private static NestedResolveResult <City> CreateVinaDelMar() => NestedResolveResult.Pack( Universe.Create <City>("Viña del Mar"), NestedResolveResult.Pack( Universe.Create <Country>("Chile"), NestedResolveResult.Pack( Universe.Create <Continent>("South America"), Universe.Create <Planet>("Earth") ) ) );
public Database(string filename) { _filename = filename; bool dbNeedsInitialization = !System.IO.File.Exists(filename); _connection = new SQLiteConnection(@"URI=file:" + filename); _connection.Open(); _connection.EnableExtensions(true); _connection.LoadExtension("SQLite.Interop.dll", "sqlite3_fts5_init"); using (var cmd = new SQLiteCommand(_connection)) { cmd.CommandText = "PRAGMA foreign_keys = ON;"; cmd.ExecuteNonQuery(); } if (dbNeedsInitialization) { using (var cmd = new SQLiteCommand(_connection)) { cmd.CommandText = DbInitScript.InitScript; cmd.ExecuteNonQuery(); } Universe defaultUniverse = new Universe(_connection); defaultUniverse.Name = "New Universe"; defaultUniverse.MarkdownCss = DefaultMarkdownCss.DefaultCss; defaultUniverse.Create(); Metadata md = new Metadata(_connection); md.DefaultUniverseId = defaultUniverse.id; } Metadata = new Metadata(_connection); Universes = new SortBySortIndexBindingList <UniverseViewModel>(); Instance = this; }