Beispiel #1
0
        public void TestObjectToJsonbSqlParameter()
        {
            try
            {
                var input = new TestData()
                {
                    X = 1, Z = 2
                };
                var users = new UsersWithTestData()
                {
                    Id = 1, JsonData = input
                };

                _connection.ExecuteSql(@"CREATE TABLE Users (Id integer NOT NULL, JsonData jsonb)");
                _connection.ExecuteSql("INSERT INTO Users (Id, JsonData) VALUES (@Id, @JsonData)", users);

                var result = _connection.QuerySql <UsersWithTestData>(@"SELECT Users.* FROM Users").First();
                Assert.AreEqual(input.X, result.JsonData.X);
                Assert.AreEqual(input.Z, result.JsonData.Z);
            }
            finally
            {
                Cleanup("DROP TABLE Users");
            }
        }
Beispiel #2
0
        public void TestObjectToJsonbProcParameters()
        {
            try
            {
                var input = new TestData()
                {
                    X = 1, Z = 2
                };
                var users = new UsersWithTestData()
                {
                    Id = 1, JsonData = input
                };

                _connection.ExecuteSql(@"CREATE TABLE Users (Id integer NOT NULL, JsonData jsonb)");
                _connection.ExecuteSql("CREATE TYPE PostgreSQLTestType AS (Id integer, JsonData jsonb)");
                _connection.ExecuteSql(@"
					CREATE OR REPLACE FUNCTION TestObjectToJsonbProcParameters (Id integer, JsonData jsonb) 
					RETURNS SETOF PostgreSQLTestType
					AS $$
					BEGIN 
						RETURN QUERY SELECT id as id, JsonData as JsonData;
					END;
					$$ LANGUAGE plpgsql;"                    );

                var result = _connection.Query <UsersWithTestData>("TestObjectToJsonbProcParameters", users).First();
                Assert.AreEqual(input.X, result.JsonData.X);
                Assert.AreEqual(input.Z, result.JsonData.Z);
            }
            finally
            {
                Cleanup("DROP FUNCTION TestObjectToJsonbProcParameters (Id integer, JsonData jsonb) ");
                Cleanup("DROP TYPE PostgreSQLTestType");
                Cleanup("DROP TABLE Users");
            }
        }
        public void TestJsonQueryParameter()
        {
            try
            {
                var input = new TestData()
                {
                    X = 1, Z = 2, Text = "MyText"
                };
                var users = new UsersWithTestData()
                {
                    Id = 1, JsonData = input
                };

                _connection.ExecuteSql(@"CREATE TABLE Users (Id integer NOT NULL, JsonData jsonb)");
                _connection.ExecuteSql("INSERT INTO Users (Id, JsonData) VALUES (@Id, @JsonData)", users);

                var result = _connection.QuerySql <UsersWithTestData>(
//												"SELECT Users.* FROM Users WHERE JsonData @> '{ \"Text\": \"MyText\" }'",
                    "SELECT Users.* FROM Users WHERE JsonData @> ('{ \"Text\": \"' || @Text || '\" }')::jsonb",
                    new { Text = "MyText" }).FirstOrDefault();
                Assert.AreEqual(input.X, result.JsonData.X);
                Assert.AreEqual(input.Z, result.JsonData.Z);
            }
            finally
            {
                Cleanup("DROP TABLE Users");
            }
        }
		public void TestObjectToJsonbSqlParameter()
		{
			try
			{
				var input = new TestData() { X = 1, Z = 2 };
				var users = new UsersWithTestData() { Id = 1, JsonData = input };

				_connection.ExecuteSql(@"CREATE TABLE Users (Id integer NOT NULL, JsonData jsonb)");
				_connection.ExecuteSql("INSERT INTO Users (Id, JsonData) VALUES (@Id, @JsonData)", users);

				var result = _connection.QuerySql<UsersWithTestData>(@"SELECT Users.* FROM Users").First();
				Assert.AreEqual(input.X, result.JsonData.X);
				Assert.AreEqual(input.Z, result.JsonData.Z);
			}
			finally
			{
				Cleanup("DROP TABLE Users");
			}
		}
		public void TestObjectToJsonbProcParameters()
		{
			try
			{
				var input = new TestData() { X = 1, Z = 2 };
				var users = new UsersWithTestData() { Id = 1, JsonData = input };

				_connection.ExecuteSql(@"CREATE TABLE Users (Id integer NOT NULL, JsonData jsonb)");
				_connection.ExecuteSql("CREATE TYPE PostgreSQLTestType AS (Id integer, JsonData jsonb)");
				_connection.ExecuteSql(@"
					CREATE OR REPLACE FUNCTION PostgreSQLTestExecute (Id integer, JsonData jsonb) 
					RETURNS SETOF PostgreSQLTestType
					AS $$
					BEGIN 
						RETURN QUERY SELECT id as id, JsonData as JsonData;
					END;
					$$ LANGUAGE plpgsql;");

				var result = _connection.Query<UsersWithTestData>("PostgreSQLTestExecute", users).First();
				Assert.AreEqual(input.X, result.JsonData.X);
				Assert.AreEqual(input.Z, result.JsonData.Z);
			}
			finally
			{
				Cleanup("DROP FUNCTION PostgreSQLTestExecute (Id integer, JsonData jsonb) ");
				Cleanup("DROP TYPE PostgreSQLTestType");
				Cleanup("DROP TABLE Users");
			}
		}