Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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))
                );
        }
Ejemplo n.º 3
0
 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")
             )
         )
     );
Ejemplo n.º 4
0
        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;
        }