@pgpm/types 0.16.0 → 0.16.8

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.
package/Makefile CHANGED
@@ -1,5 +1,5 @@
1
1
  EXTENSION = pgpm-types
2
- DATA = sql/pgpm-types--0.15.3.sql
2
+ DATA = sql/pgpm-types--0.16.0.sql
3
3
 
4
4
  PG_CONFIG = pg_config
5
5
  PGXS := $(shell $(PG_CONFIG) --pgxs)
@@ -2,6 +2,6 @@
2
2
  -- requires: schemas/public/schema
3
3
 
4
4
  BEGIN;
5
- CREATE DOMAIN attachment AS text CHECK (VALUE ~ '^(https?)://[^\s/$.?#].[^\s]*$');
6
- COMMENT ON DOMAIN attachment IS E'@name pgpmInternalTypeAttachment';
5
+ CREATE DOMAIN attachment AS text CHECK (value ~ '^https?://[^\s]+$');
6
+ COMMENT ON DOMAIN attachment IS E'@name constructiveInternalTypeAttachment';
7
7
  COMMIT;
@@ -2,7 +2,7 @@
2
2
  -- requires: schemas/public/schema
3
3
 
4
4
  BEGIN;
5
- CREATE DOMAIN email AS citext CHECK (value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$');
6
- COMMENT ON DOMAIN email IS E'@name pgpmInternalTypeEmail';
5
+ CREATE DOMAIN email AS citext CHECK (value ~ '@');
6
+ COMMENT ON DOMAIN email IS E'@name constructiveInternalTypeEmail';
7
7
  COMMIT;
8
8
 
@@ -2,7 +2,7 @@
2
2
  -- requires: schemas/public/schema
3
3
 
4
4
  BEGIN;
5
- CREATE DOMAIN hostname AS text CHECK (VALUE ~ '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$');
6
- COMMENT ON DOMAIN hostname IS E'@name pgpmInternalTypeHostname';
5
+ CREATE DOMAIN hostname AS text CHECK (value ~ '^[^\s]+$');
6
+ COMMENT ON DOMAIN hostname IS E'@name constructiveInternalTypeHostname';
7
7
  COMMIT;
8
8
 
@@ -3,10 +3,16 @@
3
3
 
4
4
  BEGIN;
5
5
  CREATE DOMAIN image AS jsonb CHECK (
6
- value ?& ARRAY['url', 'mime']
7
- AND
8
- value->>'url' ~ '^(https?)://[^\s/$.?#].[^\s]*$'
6
+ jsonb_typeof(value) = 'object'
7
+ AND (value ? 'url' OR value ? 'id' OR value ? 'key')
8
+ AND (NOT value ? 'url' OR (value->>'url') ~ '^https?://[^\s]+$')
9
+ AND (NOT value ? 'id' OR jsonb_typeof(value->'id') = 'string')
10
+ AND (NOT value ? 'key' OR jsonb_typeof(value->'key') = 'string')
11
+ AND (NOT value ? 'bucket' OR jsonb_typeof(value->'bucket') = 'string')
12
+ AND (NOT value ? 'provider' OR jsonb_typeof(value->'provider') = 'string')
13
+ AND (NOT value ? 'mime' OR jsonb_typeof(value->'mime') = 'string')
14
+ AND (NOT value ? 'versions' OR jsonb_typeof(value->'versions') = 'array')
9
15
  );
10
- COMMENT ON DOMAIN image IS E'@name pgpmInternalTypeImage';
16
+ COMMENT ON DOMAIN image IS E'@name constructiveInternalTypeImage';
11
17
  COMMIT;
12
18
 
@@ -2,7 +2,7 @@
2
2
  -- requires: schemas/public/schema
3
3
 
4
4
  BEGIN;
5
- CREATE DOMAIN origin AS text CHECK (VALUE = substring(VALUE from '^(https?://[^/]*)'));
6
- COMMENT ON DOMAIN origin IS E'@name pgpmInternalTypeOrigin';
5
+ CREATE DOMAIN origin AS text CHECK (value ~ '^https?://[^/\s]+$');
6
+ COMMENT ON DOMAIN origin IS E'@name constructiveInternalTypeOrigin';
7
7
  COMMIT;
8
8
 
@@ -1,14 +1,16 @@
1
1
  -- Deploy schemas/public/domains/upload to pg
2
-
3
2
  -- requires: schemas/public/schema
4
3
 
5
4
  BEGIN;
6
-
7
5
  CREATE DOMAIN upload AS jsonb CHECK (
8
- value ?& ARRAY['url', 'mime']
9
- AND
10
- value->>'url' ~ '^(https?)://[^\s/$.?#].[^\s]*$'
6
+ jsonb_typeof(value) = 'object'
7
+ AND (value ? 'url' OR value ? 'id' OR value ? 'key')
8
+ AND (NOT value ? 'url' OR (value->>'url') ~ '^https?://[^\s]+$')
9
+ AND (NOT value ? 'id' OR jsonb_typeof(value->'id') = 'string')
10
+ AND (NOT value ? 'key' OR jsonb_typeof(value->'key') = 'string')
11
+ AND (NOT value ? 'bucket' OR jsonb_typeof(value->'bucket') = 'string')
12
+ AND (NOT value ? 'provider' OR jsonb_typeof(value->'provider') = 'string')
13
+ AND (NOT value ? 'mime' OR jsonb_typeof(value->'mime') = 'string')
11
14
  );
12
- COMMENT ON DOMAIN upload IS E'@name pgpmInternalTypeUpload';
13
-
15
+ COMMENT ON DOMAIN upload IS E'@name constructiveInternalTypeUpload';
14
16
  COMMIT;
@@ -2,7 +2,7 @@
2
2
  -- requires: schemas/public/schema
3
3
 
4
4
  BEGIN;
5
- CREATE DOMAIN url AS text CHECK (VALUE ~ '^(https?)://[^\s/$.?#].[^\s]*$');
6
- COMMENT ON DOMAIN url IS E'@name pgpmInternalTypeUrl';
5
+ CREATE DOMAIN url AS text CHECK (value ~ '^https?://[^\s]+$');
6
+ COMMENT ON DOMAIN url IS E'@name constructiveInternalTypeUrl';
7
7
  COMMIT;
8
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgpm/types",
3
- "version": "0.16.0",
3
+ "version": "0.16.8",
4
4
  "description": "Core PostgreSQL data types with deploy/verify/revert SQL scripts",
5
5
  "author": "Dan Lynch <pyramation@gmail.com>",
6
6
  "contributors": [
@@ -34,5 +34,5 @@
34
34
  "bugs": {
35
35
  "url": "https://github.com/constructive-io/pgpm-modules/issues"
36
36
  },
37
- "gitHead": "3b2260bf7640d7194f237d556c7e5033bc7a9405"
37
+ "gitHead": "a0718b6712d797acacfd51fbcdad8a6d577d8bbc"
38
38
  }
@@ -1,6 +1,6 @@
1
1
  # pgpm-types extension
2
2
  comment = 'pgpm-types extension'
3
- default_version = '0.15.3'
3
+ default_version = '0.16.0'
4
4
  module_pathname = '$libdir/pgpm-types'
5
5
  requires = 'plpgsql,citext,pgpm-verify'
6
6
  relocatable = false
package/pgpm.plan CHANGED
@@ -7,8 +7,6 @@ schemas/public/domains/attachment [schemas/public/schema] 2017-08-11T08:11:51Z s
7
7
  schemas/public/domains/email [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/email
8
8
  schemas/public/domains/hostname [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/hostname
9
9
  schemas/public/domains/image [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/image
10
- schemas/public/domains/multiple_select [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/multiple_select
11
10
  schemas/public/domains/origin [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/origin
12
- schemas/public/domains/single_select [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/single_select
13
11
  schemas/public/domains/upload [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/upload
14
12
  schemas/public/domains/url [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/url
@@ -0,0 +1,71 @@
1
+ \echo Use "CREATE EXTENSION pgpm-types" to load this file. \quit
2
+ CREATE DOMAIN attachment AS text
3
+ CHECK (value ~ E'^https?://[^\\s]+$');
4
+
5
+ COMMENT ON DOMAIN attachment IS '@name constructiveInternalTypeAttachment';
6
+
7
+ CREATE DOMAIN email AS citext
8
+ CHECK (value ~ '@');
9
+
10
+ COMMENT ON DOMAIN email IS '@name constructiveInternalTypeEmail';
11
+
12
+ CREATE DOMAIN hostname AS text
13
+ CHECK (value ~ E'^[^\\s]+$');
14
+
15
+ COMMENT ON DOMAIN hostname IS '@name constructiveInternalTypeHostname';
16
+
17
+ CREATE DOMAIN image AS jsonb
18
+ CHECK (
19
+ jsonb_typeof(value) = 'object'
20
+ AND (value ? 'url'
21
+ OR value ? 'id'
22
+ OR value ? 'key')
23
+ AND (NOT (value ? 'url')
24
+ OR (value ->> 'url') ~ E'^https?://[^\\s]+$')
25
+ AND (NOT (value ? 'id')
26
+ OR jsonb_typeof(value -> 'id') = 'string')
27
+ AND (NOT (value ? 'key')
28
+ OR jsonb_typeof(value -> 'key') = 'string')
29
+ AND (NOT (value ? 'bucket')
30
+ OR jsonb_typeof(value -> 'bucket') = 'string')
31
+ AND (NOT (value ? 'provider')
32
+ OR jsonb_typeof(value -> 'provider') = 'string')
33
+ AND (NOT (value ? 'mime')
34
+ OR jsonb_typeof(value -> 'mime') = 'string')
35
+ AND (NOT (value ? 'versions')
36
+ OR jsonb_typeof(value -> 'versions') = 'array')
37
+ );
38
+
39
+ COMMENT ON DOMAIN image IS '@name constructiveInternalTypeImage';
40
+
41
+ CREATE DOMAIN origin AS text
42
+ CHECK (value ~ E'^https?://[^/\\s]+$');
43
+
44
+ COMMENT ON DOMAIN origin IS '@name constructiveInternalTypeOrigin';
45
+
46
+ CREATE DOMAIN upload AS jsonb
47
+ CHECK (
48
+ jsonb_typeof(value) = 'object'
49
+ AND (value ? 'url'
50
+ OR value ? 'id'
51
+ OR value ? 'key')
52
+ AND (NOT (value ? 'url')
53
+ OR (value ->> 'url') ~ E'^https?://[^\\s]+$')
54
+ AND (NOT (value ? 'id')
55
+ OR jsonb_typeof(value -> 'id') = 'string')
56
+ AND (NOT (value ? 'key')
57
+ OR jsonb_typeof(value -> 'key') = 'string')
58
+ AND (NOT (value ? 'bucket')
59
+ OR jsonb_typeof(value -> 'bucket') = 'string')
60
+ AND (NOT (value ? 'provider')
61
+ OR jsonb_typeof(value -> 'provider') = 'string')
62
+ AND (NOT (value ? 'mime')
63
+ OR jsonb_typeof(value -> 'mime') = 'string')
64
+ );
65
+
66
+ COMMENT ON DOMAIN upload IS '@name constructiveInternalTypeUpload';
67
+
68
+ CREATE DOMAIN url AS text
69
+ CHECK (value ~ E'^https?://[^\\s]+$');
70
+
71
+ COMMENT ON DOMAIN url IS '@name constructiveInternalTypeUrl';
@@ -1,8 +0,0 @@
1
- -- Deploy schemas/public/domains/multiple_select to pg
2
- -- requires: schemas/public/schema
3
-
4
- BEGIN;
5
- CREATE DOMAIN multiple_select AS jsonb CHECK (value ?& ARRAY['value']);
6
- COMMENT ON DOMAIN multiple_select IS E'@name pgpmInternalTypeMultipleSelect';
7
- COMMIT;
8
-
@@ -1,12 +0,0 @@
1
- -- Deploy schemas/public/domains/single_select to pg
2
-
3
- -- requires: schemas/public/schema
4
-
5
- BEGIN;
6
-
7
- CREATE DOMAIN single_select AS jsonb CHECK (
8
- value ?& ARRAY['value']
9
- );
10
- COMMENT ON DOMAIN single_select IS E'@name pgpmInternalTypeSingleSelect';
11
-
12
- COMMIT;
@@ -1,7 +0,0 @@
1
- -- Revert schemas/public/domains/multiple_select from pg
2
-
3
- BEGIN;
4
-
5
- DROP TYPE public.multiple_select;
6
-
7
- COMMIT;
@@ -1,7 +0,0 @@
1
- -- Revert schemas/public/domains/single_select from pg
2
-
3
- BEGIN;
4
-
5
- DROP TYPE public.single_select;
6
-
7
- COMMIT;
@@ -1,51 +0,0 @@
1
- \echo Use "CREATE EXTENSION pgpm-types" to load this file. \quit
2
- CREATE DOMAIN attachment AS text
3
- CHECK (value ~ E'^(https?)://[^\\s/$.?#].[^\\s]*$');
4
-
5
- COMMENT ON DOMAIN attachment IS '@name pgpmInternalTypeAttachment';
6
-
7
- CREATE DOMAIN email AS citext
8
- CHECK (value ~ E'^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$');
9
-
10
- COMMENT ON DOMAIN email IS '@name pgpmInternalTypeEmail';
11
-
12
- CREATE DOMAIN hostname AS text
13
- CHECK (value ~ E'^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$');
14
-
15
- COMMENT ON DOMAIN hostname IS '@name pgpmInternalTypeHostname';
16
-
17
- CREATE DOMAIN image AS jsonb
18
- CHECK (
19
- value ?& ARRAY['url', 'mime']
20
- AND (value ->> 'url') ~ E'^(https?)://[^\\s/$.?#].[^\\s]*$'
21
- );
22
-
23
- COMMENT ON DOMAIN image IS '@name pgpmInternalTypeImage';
24
-
25
- CREATE DOMAIN multiple_select AS jsonb
26
- CHECK (value ?& ARRAY['value']);
27
-
28
- COMMENT ON DOMAIN multiple_select IS '@name pgpmInternalTypeMultipleSelect';
29
-
30
- CREATE DOMAIN origin AS text
31
- CHECK (value = pg_catalog."substring"(value, '^(https?://[^/]*)'));
32
-
33
- COMMENT ON DOMAIN origin IS '@name pgpmInternalTypeOrigin';
34
-
35
- CREATE DOMAIN single_select AS jsonb
36
- CHECK (value ?& ARRAY['value']);
37
-
38
- COMMENT ON DOMAIN single_select IS '@name pgpmInternalTypeSingleSelect';
39
-
40
- CREATE DOMAIN upload AS jsonb
41
- CHECK (
42
- value ?& ARRAY['url', 'mime']
43
- AND (value ->> 'url') ~ E'^(https?)://[^\\s/$.?#].[^\\s]*$'
44
- );
45
-
46
- COMMENT ON DOMAIN upload IS '@name pgpmInternalTypeUpload';
47
-
48
- CREATE DOMAIN url AS text
49
- CHECK (value ~ E'^(https?)://[^\\s/$.?#].[^\\s]*$');
50
-
51
- COMMENT ON DOMAIN url IS '@name pgpmInternalTypeUrl';
@@ -1,7 +0,0 @@
1
- -- Verify schemas/public/domains/multiple_select on pg
2
-
3
- BEGIN;
4
-
5
- SELECT verify_domain ('public.multiple_select');
6
-
7
- ROLLBACK;
@@ -1,7 +0,0 @@
1
- -- Verify schemas/public/domains/single_select on pg
2
-
3
- BEGIN;
4
-
5
- SELECT verify_domain ('public.single_select');
6
-
7
- ROLLBACK;