postgres-framework 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitmodules +3 -0
- data/LICENSE +26 -0
- data/README.md +50 -0
- data/bin/sem-add-framework +21 -0
- data/bin/sem-add-safe +32 -0
- data/plpgunit/frontend/readme.txt +1 -0
- data/plpgunit/install/0.uninstall-unit-test.sql +26 -0
- data/plpgunit/install/1.install-unit-test.sql +972 -0
- data/plpgunit/license.txt +19 -0
- data/plpgunit/readme.md +174 -0
- data/scripts/20170608-212033.sql +972 -0
- data/scripts/20170608-212040.sql +1 -0
- data/scripts/20170608-212341.sql +10 -0
- data/scripts/20170608-212348.sql +23 -0
- data/scripts/20170608-212359.sql +9 -0
- data/scripts/20170608-212413.sql +9 -0
- data/scripts/20170608-212430.sql +34 -0
- data/scripts/20170608-212759.sql +24 -0
- data/scripts/20170608-212803.sql +23 -0
- data/scripts/20170608-212813.sql +75 -0
- data/scripts/20170608-212819.sql +81 -0
- data/scripts/20170608-212825.sql +59 -0
- data/scripts/20170609-183531.sql +12 -0
- data/src/functions/array_distinct.sql +10 -0
- data/src/functions/array_from_json.sql +23 -0
- data/src/functions/check_http_url.sql +9 -0
- data/src/functions/check_url.sql +9 -0
- data/src/functions/create_unique_name.sql +34 -0
- data/src/functions/trf_created_at_and_updated_at.sql +12 -0
- data/src/schema_create.sql +1 -0
- data/tests/functions/array_distinct.sql +24 -0
- data/tests/functions/array_from_json.sql +23 -0
- data/tests/functions/check_http_url.sql +75 -0
- data/tests/functions/check_url.sql +81 -0
- data/tests/functions/create_unique_name.sql +59 -0
- metadata +94 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
-- Automatically update date columns
|
2
|
+
CREATE OR REPLACE FUNCTION framework.trf_created_at_and_updated_at() RETURNS TRIGGER AS $$
|
3
|
+
BEGIN
|
4
|
+
IF (TG_OP = 'INSERT') THEN
|
5
|
+
NEW.created_at = now();
|
6
|
+
END IF;
|
7
|
+
|
8
|
+
NEW.updated_at = now();
|
9
|
+
|
10
|
+
RETURN NEW;
|
11
|
+
END;
|
12
|
+
$$ LANGUAGE plpgsql;
|
@@ -0,0 +1 @@
|
|
1
|
+
CREATE SCHEMA IF NOT EXISTS framework;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION unit_tests.array_distinct_test()
|
2
|
+
RETURNS test_result AS $$
|
3
|
+
DECLARE arr text[];
|
4
|
+
DECLARE message test_result;
|
5
|
+
BEGIN
|
6
|
+
SELECT framework.array_distinct(ARRAY['foo', NULL, 'bar', 'foo', 'ok', 'bar'], TRUE) INTO arr;
|
7
|
+
|
8
|
+
IF arr <> ARRAY['bar', 'foo', 'ok'] THEN
|
9
|
+
SELECT assert.fail('Unexpected array value') INTO message;
|
10
|
+
RETURN message;
|
11
|
+
END IF;
|
12
|
+
|
13
|
+
SELECT framework.array_distinct(ARRAY[]::TEXT[], TRUE) INTO arr;
|
14
|
+
SELECT framework.array_distinct(ARRAY[]::INTEGER[], TRUE, ARRAY[]::INTEGER[]) INTO arr;
|
15
|
+
|
16
|
+
IF arr IS NULL THEN
|
17
|
+
SELECT assert.fail('Expected empty array, got null') INTO message;
|
18
|
+
RETURN message;
|
19
|
+
END IF;
|
20
|
+
|
21
|
+
SELECT assert.ok('framework.array_distinct is OK') INTO message;
|
22
|
+
RETURN message;
|
23
|
+
END;
|
24
|
+
$$ LANGUAGE plpgsql;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION unit_tests.array_from_json_test()
|
2
|
+
RETURNS test_result AS $$
|
3
|
+
DECLARE arr text[];
|
4
|
+
DECLARE message test_result;
|
5
|
+
BEGIN
|
6
|
+
SELECT framework.array_from_json('["foo", "bar"]') INTO arr;
|
7
|
+
|
8
|
+
IF arr <> ARRAY['foo', 'bar'] THEN
|
9
|
+
SELECT assert.fail('Expected array: ["foo", "bar"]') INTO message;
|
10
|
+
RETURN message;
|
11
|
+
END IF;
|
12
|
+
|
13
|
+
SELECT framework.array_from_json('[]') INTO arr;
|
14
|
+
|
15
|
+
IF arr <> ARRAY[]::TEXT[] THEN
|
16
|
+
SELECT assert.fail('Expected empty array, got null') INTO message;
|
17
|
+
RETURN message;
|
18
|
+
END IF;
|
19
|
+
|
20
|
+
SELECT assert.ok('framework.array_distinct is OK') INTO message;
|
21
|
+
RETURN message;
|
22
|
+
END;
|
23
|
+
$$ LANGUAGE plpgsql;
|
@@ -0,0 +1,75 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION unit_tests.check_http_url_test()
|
2
|
+
RETURNS test_result AS $$
|
3
|
+
DECLARE message test_result;
|
4
|
+
DECLARE result boolean;
|
5
|
+
BEGIN
|
6
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('localhost');
|
7
|
+
IF result = TRUE THEN
|
8
|
+
SELECT assert.fail('Value "localhost" is invalid url.') INTO message;
|
9
|
+
RETURN message;
|
10
|
+
END IF;
|
11
|
+
|
12
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('http://');
|
13
|
+
IF result = TRUE THEN
|
14
|
+
SELECT assert.fail('Value "http://" is invalid url.') INTO message;
|
15
|
+
RETURN message;
|
16
|
+
END IF;
|
17
|
+
|
18
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('google.pl');
|
19
|
+
IF result = TRUE THEN
|
20
|
+
SELECT assert.fail('Value "google.pl" is invalid url.') INTO message;
|
21
|
+
RETURN message;
|
22
|
+
END IF;
|
23
|
+
|
24
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('www.google.pl');
|
25
|
+
IF result = TRUE THEN
|
26
|
+
SELECT assert.fail('Value "www.google.pl" is invalid url.') INTO message;
|
27
|
+
RETURN message;
|
28
|
+
END IF;
|
29
|
+
|
30
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('//google.pl');
|
31
|
+
IF result = TRUE THEN
|
32
|
+
SELECT assert.fail('Value "//google.pl" is invalid url.') INTO message;
|
33
|
+
RETURN message;
|
34
|
+
END IF;
|
35
|
+
|
36
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('http//google.pl');
|
37
|
+
IF result = TRUE THEN
|
38
|
+
SELECT assert.fail('Value "http//google.pl" is invalid url.') INTO message;
|
39
|
+
RETURN message;
|
40
|
+
END IF;
|
41
|
+
|
42
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('https://google.pl');
|
43
|
+
IF result = FALSE THEN
|
44
|
+
SELECT assert.fail('Value "https://google.pl" is valid url.') INTO message;
|
45
|
+
RETURN message;
|
46
|
+
END IF;
|
47
|
+
|
48
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('http://www.google.pl');
|
49
|
+
IF result = FALSE THEN
|
50
|
+
SELECT assert.fail('Value "http://www.google.pl" is valid url.') INTO message;
|
51
|
+
RETURN message;
|
52
|
+
END IF;
|
53
|
+
|
54
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('abcdefg://www.google.pl');
|
55
|
+
IF result = TRUE THEN
|
56
|
+
SELECT assert.fail('Value "abcdefg://www.google.pl" is invalid url.') INTO message;
|
57
|
+
RETURN message;
|
58
|
+
END IF;
|
59
|
+
|
60
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('abcdefg://google.pl');
|
61
|
+
IF result = TRUE THEN
|
62
|
+
SELECT assert.fail('Value "abcdefg://google.pl" is invalid url.') INTO message;
|
63
|
+
RETURN message;
|
64
|
+
END IF;
|
65
|
+
|
66
|
+
SELECT check_http_url INTO result FROM framework.check_http_url('http://localhost/test/test?gfdgfdg#ok');
|
67
|
+
IF result = FALSE THEN
|
68
|
+
SELECT assert.fail('Value "http://localhost/test/test?gfdgfdg#ok" is valid url.') INTO message;
|
69
|
+
RETURN message;
|
70
|
+
END IF;
|
71
|
+
|
72
|
+
SELECT assert.ok('framework.check_http_url is OK') INTO message;
|
73
|
+
RETURN message;
|
74
|
+
END;
|
75
|
+
$$ LANGUAGE plpgsql;
|
@@ -0,0 +1,81 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION unit_tests.check_url_test()
|
2
|
+
RETURNS test_result AS $$
|
3
|
+
DECLARE message test_result;
|
4
|
+
DECLARE result boolean;
|
5
|
+
BEGIN
|
6
|
+
SELECT check_url INTO result FROM framework.check_url('localhost');
|
7
|
+
IF result = TRUE THEN
|
8
|
+
SELECT assert.fail('Value "localhost" is invalid url.') INTO message;
|
9
|
+
RETURN message;
|
10
|
+
END IF;
|
11
|
+
|
12
|
+
SELECT check_url INTO result FROM framework.check_url('http://');
|
13
|
+
IF result = TRUE THEN
|
14
|
+
SELECT assert.fail('Value "http://" is invalid url.') INTO message;
|
15
|
+
RETURN message;
|
16
|
+
END IF;
|
17
|
+
|
18
|
+
SELECT check_url INTO result FROM framework.check_url('google.pl');
|
19
|
+
IF result = TRUE THEN
|
20
|
+
SELECT assert.fail('Value "google.pl" is invalid url.') INTO message;
|
21
|
+
RETURN message;
|
22
|
+
END IF;
|
23
|
+
|
24
|
+
SELECT check_url INTO result FROM framework.check_url('www.google.pl');
|
25
|
+
IF result = TRUE THEN
|
26
|
+
SELECT assert.fail('Value "www.google.pl" is invalid url.') INTO message;
|
27
|
+
RETURN message;
|
28
|
+
END IF;
|
29
|
+
|
30
|
+
SELECT check_url INTO result FROM framework.check_url('//google.pl');
|
31
|
+
IF result = TRUE THEN
|
32
|
+
SELECT assert.fail('Value "//google.pl" is invalid url.') INTO message;
|
33
|
+
RETURN message;
|
34
|
+
END IF;
|
35
|
+
|
36
|
+
SELECT check_url INTO result FROM framework.check_url('http//google.pl');
|
37
|
+
IF result = TRUE THEN
|
38
|
+
SELECT assert.fail('Value "http//google.pl" is invalid url.') INTO message;
|
39
|
+
RETURN message;
|
40
|
+
END IF;
|
41
|
+
|
42
|
+
SELECT check_url INTO result FROM framework.check_url('https://google.pl');
|
43
|
+
IF result = FALSE THEN
|
44
|
+
SELECT assert.fail('Value "https://google.pl" is valid url.') INTO message;
|
45
|
+
RETURN message;
|
46
|
+
END IF;
|
47
|
+
|
48
|
+
SELECT check_url INTO result FROM framework.check_url('http://www.google.pl');
|
49
|
+
IF result = FALSE THEN
|
50
|
+
SELECT assert.fail('Value "http://www.google.pl" is valid url.') INTO message;
|
51
|
+
RETURN message;
|
52
|
+
END IF;
|
53
|
+
|
54
|
+
SELECT check_url INTO result FROM framework.check_url('abcdefg://www.google.pl');
|
55
|
+
IF result = FALSE THEN
|
56
|
+
SELECT assert.fail('Value "abcdefg://www.google.pl" is valid url.') INTO message;
|
57
|
+
RETURN message;
|
58
|
+
END IF;
|
59
|
+
|
60
|
+
SELECT check_url INTO result FROM framework.check_url('abcdefg://google.pl');
|
61
|
+
IF result = FALSE THEN
|
62
|
+
SELECT assert.fail('Value "abcdefg://google.pl" is valid url.') INTO message;
|
63
|
+
RETURN message;
|
64
|
+
END IF;
|
65
|
+
|
66
|
+
SELECT check_url INTO result FROM framework.check_url('aąbcćdeęfg://aaałśóŋŋŋ.ąę');
|
67
|
+
IF result = FALSE THEN
|
68
|
+
SELECT assert.fail('Value "aąbcćdeęfg://aaałśóŋŋŋ.ąę" is valid url.') INTO message;
|
69
|
+
RETURN message;
|
70
|
+
END IF;
|
71
|
+
|
72
|
+
SELECT check_url INTO result FROM framework.check_url('http://localhost/test/test?gfdgfdg#ok');
|
73
|
+
IF result = FALSE THEN
|
74
|
+
SELECT assert.fail('Value "http://localhost/test/test?gfdgfdg#ok" is valid url.') INTO message;
|
75
|
+
RETURN message;
|
76
|
+
END IF;
|
77
|
+
|
78
|
+
SELECT assert.ok('framework.check_url is OK') INTO message;
|
79
|
+
RETURN message;
|
80
|
+
END;
|
81
|
+
$$ LANGUAGE plpgsql;
|
@@ -0,0 +1,59 @@
|
|
1
|
+
CREATE OR REPLACE FUNCTION unit_tests.create_unique_name_test()
|
2
|
+
RETURNS test_result AS $$
|
3
|
+
DECLARE message test_result;
|
4
|
+
DECLARE result TEXT;
|
5
|
+
DECLARE table_name TEXT = 'unit_tests.temp_create_unique_name';
|
6
|
+
DECLARE col_name TEXT = 'name';
|
7
|
+
DECLARE col_unique_name TEXT = 'unique_name';
|
8
|
+
BEGIN
|
9
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
10
|
+
EXECUTE format('CREATE TABLE IF NOT EXISTS %s (%s TEXT, %s TEXT)', table_name, col_name, col_unique_name);
|
11
|
+
|
12
|
+
SELECT create_unique_name INTO result FROM framework.create_unique_name('test', table_name, col_name, col_unique_name);
|
13
|
+
IF result <> 'test' THEN
|
14
|
+
SELECT assert.fail('Expected "test" value is "' || result || '"') INTO message;
|
15
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
16
|
+
RETURN message;
|
17
|
+
END IF;
|
18
|
+
|
19
|
+
EXECUTE format('INSERT INTO %s (%s, %s) VALUES ($1, $2);', table_name, col_name, col_unique_name)
|
20
|
+
USING 'test', 'test';
|
21
|
+
SELECT create_unique_name INTO result FROM framework.create_unique_name('test', table_name, col_name, col_unique_name);
|
22
|
+
IF result <> 'test-2' THEN
|
23
|
+
SELECT assert.fail('Expected "test-2" value is "' || result || '"') INTO message;
|
24
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
25
|
+
RETURN message;
|
26
|
+
END IF;
|
27
|
+
|
28
|
+
EXECUTE format('INSERT INTO %s (%s, %s) VALUES ($1, $2);', table_name, col_name, col_unique_name)
|
29
|
+
USING 'test', 'test-2';
|
30
|
+
SELECT create_unique_name INTO result FROM framework.create_unique_name('test', table_name, col_name, col_unique_name);
|
31
|
+
IF result <> 'test-3' THEN
|
32
|
+
SELECT assert.fail('Expected "test-3" value is "' || result || '"') INTO message;
|
33
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
34
|
+
RETURN message;
|
35
|
+
END IF;
|
36
|
+
|
37
|
+
EXECUTE format('INSERT INTO %s (%s, %s) VALUES ($1, $2);', table_name, col_name, col_unique_name)
|
38
|
+
USING 'test', 'test-3';
|
39
|
+
SELECT create_unique_name INTO result FROM framework.create_unique_name('test', table_name, col_name, col_unique_name);
|
40
|
+
IF result <> 'test-4' THEN
|
41
|
+
SELECT assert.fail('Expected "test-4" value is "' || result || '"') INTO message;
|
42
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
43
|
+
RETURN message;
|
44
|
+
END IF;
|
45
|
+
|
46
|
+
EXECUTE format('INSERT INTO %s (%s, %s) VALUES ($1, $2);', table_name, col_name, col_unique_name)
|
47
|
+
USING 'test-2', 'test-2';
|
48
|
+
SELECT create_unique_name INTO result FROM framework.create_unique_name('test-2', table_name, col_name, col_unique_name);
|
49
|
+
IF result <> 'test-2-3' THEN
|
50
|
+
SELECT assert.fail('Expected "test-2-3" value is "' || result || '"') INTO message;
|
51
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
52
|
+
RETURN message;
|
53
|
+
END IF;
|
54
|
+
|
55
|
+
EXECUTE format('DROP TABLE IF EXISTS %s', table_name);
|
56
|
+
SELECT assert.ok('framework.create_unique_name is OK') INTO message;
|
57
|
+
RETURN message;
|
58
|
+
END;
|
59
|
+
$$ LANGUAGE plpgsql;
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: postgres-framework
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rafał Mikołajun
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-06-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: schema-evolution-manager
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.34
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.34
|
27
|
+
description: It's simple framework for PostgreSQL database with unit tests and versioning.
|
28
|
+
email:
|
29
|
+
executables:
|
30
|
+
- sem-add-safe
|
31
|
+
- sem-add-framework
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- ".gitmodules"
|
36
|
+
- LICENSE
|
37
|
+
- README.md
|
38
|
+
- bin/sem-add-framework
|
39
|
+
- bin/sem-add-safe
|
40
|
+
- plpgunit/frontend/readme.txt
|
41
|
+
- plpgunit/install/0.uninstall-unit-test.sql
|
42
|
+
- plpgunit/install/1.install-unit-test.sql
|
43
|
+
- plpgunit/license.txt
|
44
|
+
- plpgunit/readme.md
|
45
|
+
- scripts/20170608-212033.sql
|
46
|
+
- scripts/20170608-212040.sql
|
47
|
+
- scripts/20170608-212341.sql
|
48
|
+
- scripts/20170608-212348.sql
|
49
|
+
- scripts/20170608-212359.sql
|
50
|
+
- scripts/20170608-212413.sql
|
51
|
+
- scripts/20170608-212430.sql
|
52
|
+
- scripts/20170608-212759.sql
|
53
|
+
- scripts/20170608-212803.sql
|
54
|
+
- scripts/20170608-212813.sql
|
55
|
+
- scripts/20170608-212819.sql
|
56
|
+
- scripts/20170608-212825.sql
|
57
|
+
- scripts/20170609-183531.sql
|
58
|
+
- src/functions/array_distinct.sql
|
59
|
+
- src/functions/array_from_json.sql
|
60
|
+
- src/functions/check_http_url.sql
|
61
|
+
- src/functions/check_url.sql
|
62
|
+
- src/functions/create_unique_name.sql
|
63
|
+
- src/functions/trf_created_at_and_updated_at.sql
|
64
|
+
- src/schema_create.sql
|
65
|
+
- tests/functions/array_distinct.sql
|
66
|
+
- tests/functions/array_from_json.sql
|
67
|
+
- tests/functions/check_http_url.sql
|
68
|
+
- tests/functions/check_url.sql
|
69
|
+
- tests/functions/create_unique_name.sql
|
70
|
+
homepage: https://github.com/mikoweb/postgres-framework
|
71
|
+
licenses:
|
72
|
+
- BSD-4-Clause
|
73
|
+
metadata: {}
|
74
|
+
post_install_message:
|
75
|
+
rdoc_options: []
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
requirements: []
|
89
|
+
rubyforge_project:
|
90
|
+
rubygems_version: 2.6.11
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
93
|
+
summary: PostgreSQL Framework
|
94
|
+
test_files: []
|