Esempio n. 1
0
        ///------------------------------------------------------------------------
        /// High level semantics
        ///

        // create a target instance
        public static bool Open(string name, DatabaseKinds dskind)
        {
            Logger.WriteLine(3, $">Sql Open {name} {dskind}");
            ExprDict = new Dictionary <int, ExpressionEval>();
            var sqleval = SqlEvaluator.Create();

            switch (dskind)
            {
            case DatabaseKinds.Sqlite:
                var database = Sqlite.SqliteDatabase.Create(name, sqleval);
                Current = new SqlTarget {
                    _sqlgen = new SqlGen()
                    {
                        Templater = new SqliteTemplater(),
                    },
                    _database       = database,
                    FunctionCreator = database,
                };
                break;

            case DatabaseKinds.Postgres:
                Current = new SqlTarget {
                    _sqlgen = new SqlGen()
                    {
                        Templater = new PostgresTemplater(),
                    },
                    _database = Postgres.PostgresDatabase.Create(name, sqleval),
                    // FunctionCreator set later by gateway
                };
                break;

            default:
                throw Logger.Fatal(dskind);
            }
            if (!Current._database.IsOpen)
            {
                throw Current.SqlError("database open failed");
            }
            return(true);
        }