message-db 2.1.6 → 3.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff67bc3fb9b5d5c704d14440e8c44007d43b7c667d836a1d75d0525a20b2c681
4
- data.tar.gz: ff913d2ba8a54b89fe247e9cf9afd0e3d354a50ed185a14bf25b42eb278336e9
3
+ metadata.gz: 47624b22850abd2ee71b60e2b721c215dc20e2ca6985b495ffe3d8013cf78a89
4
+ data.tar.gz: eea2b47d9026568e707383ec60dd9c0595f8f1723992a14743392ca3f19ddecf
5
5
  SHA512:
6
- metadata.gz: ca04dfcd83b747e80e72f9d8bc46ad580b1ec4f9f0fe2077da872381d93fda23cea54b6c91f66b10ff5b035c3e9b1333bbc2b448a837e9142f90bb05d8c760f7
7
- data.tar.gz: d683719cfb71ca7552534b4a1874094e3c685bccc6bf73e025aa401580b66969415181f523bb28ef3d567be73aabe3ad7ef2021fbf12739a55686bf7a8ca0734
6
+ metadata.gz: 6acf0100e509408dcf6934031b0e1308e405cfb3319fab40d5149ce2a6910763fdb9e8a16359d4141adc50d030d17d6036ce125e42adae94f5610fd2bac9eccd
7
+ data.tar.gz: 995ea8891da3435e9c818c17120e2d0c9e0807382193c1b0be7d7a2b4d15e9f1770b28c67aced4195a6b0294105c89fbc43e82cecef8b70695669e1c3694f724
data/database/VERSION.txt CHANGED
@@ -1 +1 @@
1
- 1.2.6
1
+ 1.3.0
@@ -35,18 +35,22 @@ fi
35
35
  echo "Database name is: $database"
36
36
  echo
37
37
 
38
+ function run_psql {
39
+ psql $database -v ON_ERROR_STOP=1 "$@"
40
+ }
41
+
38
42
  echo "Installing benchmark scripts"
39
43
  echo
40
44
 
41
- psql $database -q -f $base/benchmark_write.sql
42
- psql $database -q -f $base/benchmark_get.sql
45
+ run_psql -q -f $base/benchmark_write.sql
46
+ run_psql -q -f $base/benchmark_get.sql
43
47
 
44
48
  echo
45
49
  echo "Benchmarking write"
46
50
  echo "- - -"
47
51
  echo
48
52
 
49
- psql $database -U message_store -c "EXPLAIN ANALYZE SELECT benchmark_write('$stream_name'::varchar, $cycles::int);"
53
+ run_psql -U message_store -c "EXPLAIN ANALYZE SELECT benchmark_write('$stream_name'::varchar, $cycles::int);"
50
54
 
51
55
  echo
52
56
 
@@ -55,7 +59,7 @@ echo "Benchmarking get"
55
59
  echo "- - -"
56
60
  echo
57
61
 
58
- psql $database -U message_store -c "EXPLAIN ANALYZE SELECT benchmark_get('$stream_name'::varchar, $cycles::int);"
62
+ run_psql -U message_store -c "EXPLAIN ANALYZE SELECT benchmark_get('$stream_name'::varchar, $cycles::int);"
59
63
 
60
64
  echo "= = ="
61
65
  echo "Done"
@@ -19,6 +19,3 @@ BEGIN
19
19
  END;
20
20
  $$ LANGUAGE plpgsql
21
21
  VOLATILE;
22
-
23
-
24
-
@@ -19,6 +19,3 @@ BEGIN
19
19
  END;
20
20
  $$ LANGUAGE plpgsql
21
21
  VOLATILE;
22
-
23
-
24
-
@@ -19,7 +19,7 @@ echo "Database name is: $database"
19
19
 
20
20
  echo
21
21
 
22
- psql $database -q -c "TRUNCATE message_store.messages RESTART IDENTITY;"
22
+ psql $database -v ON_ERROR_STOP=1 -q -c "TRUNCATE message_store.messages RESTART IDENTITY;"
23
23
 
24
24
  echo "= = ="
25
25
  echo "Done Clearing Messages Table"
@@ -1,5 +1,6 @@
1
1
  CREATE OR REPLACE FUNCTION message_store.get_last_stream_message(
2
- stream_name varchar
2
+ stream_name varchar,
3
+ type varchar DEFAULT NULL
3
4
  )
4
5
  RETURNS SETOF message_store.message
5
6
  AS $$
@@ -19,7 +20,14 @@ BEGIN
19
20
  FROM
20
21
  messages
21
22
  WHERE
22
- stream_name = $1
23
+ stream_name = $1';
24
+
25
+ IF get_last_stream_message.type IS NOT NULL THEN
26
+ _command := _command || ' AND
27
+ type = $2';
28
+ END IF;
29
+
30
+ _command := _command || '
23
31
  ORDER BY
24
32
  position DESC
25
33
  LIMIT
@@ -28,10 +36,13 @@ BEGIN
28
36
  IF current_setting('message_store.debug_get', true) = 'on' OR current_setting('message_store.debug', true) = 'on' THEN
29
37
  RAISE NOTICE '» get_last_message';
30
38
  RAISE NOTICE 'stream_name ($1): %', get_last_stream_message.stream_name;
39
+ RAISE NOTICE 'type ($2): %', get_last_stream_message.type;
31
40
  RAISE NOTICE 'Generated Command: %', _command;
32
41
  END IF;
33
42
 
34
- RETURN QUERY EXECUTE _command USING get_last_stream_message.stream_name;
43
+ RETURN QUERY EXECUTE _command USING
44
+ get_last_stream_message.stream_name,
45
+ get_last_stream_message.type;
35
46
  END;
36
47
  $$ LANGUAGE plpgsql
37
48
  VOLATILE;
@@ -2,7 +2,7 @@ CREATE OR REPLACE FUNCTION message_store.message_store_version()
2
2
  RETURNS varchar
3
3
  AS $$
4
4
  BEGIN
5
- RETURN '1.2.6';
5
+ RETURN '1.3.0';
6
6
  END;
7
7
  $$ LANGUAGE plpgsql
8
8
  VOLATILE;
@@ -2,70 +2,67 @@
2
2
 
3
3
  set -e
4
4
 
5
+ if [ -z ${DATABASE_NAME+x} ]; then
6
+ database=message_store
7
+ echo "(DATABASE_NAME is not set. Using: $database.)"
8
+ else
9
+ database=$DATABASE_NAME
10
+ fi
11
+
12
+ function run_psql_file {
13
+ psql $database -q -v ON_ERROR_STOP=1 -f "$1"
14
+ }
15
+
5
16
  function script_dir {
6
17
  val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
18
  echo "$val"
8
19
  }
9
20
 
10
21
  function create-types {
11
- if [ -z ${DATABASE_NAME+x} ]; then
12
- database=message_store
13
- echo "(DATABASE_NAME is not set. Using: $database.)"
14
- else
15
- database=$DATABASE_NAME
16
- fi
17
-
18
22
  base=$(script_dir)
19
23
 
20
24
  echo "» message type"
21
- psql $database -q -f $base/types/message.sql
25
+ run_psql_file $base/types/message.sql
22
26
  }
23
27
 
24
28
  function create-functions {
25
- if [ -z ${DATABASE_NAME+x} ]; then
26
- database=message_store
27
- echo "(DATABASE_NAME is not set. Using: $database.)"
28
- else
29
- database=$DATABASE_NAME
30
- fi
31
-
32
29
  base=$(script_dir)
33
30
 
34
31
  echo "» message_store_version function"
35
- psql $database -q -f $base/functions/message-store-version.sql
32
+ run_psql_file $base/functions/message-store-version.sql
36
33
 
37
34
  echo "» hash_64 function"
38
- psql $database -q -f $base/functions/hash-64.sql
35
+ run_psql_file $base/functions/hash-64.sql
39
36
 
40
37
  echo "» acquire_lock function"
41
- psql $database -q -f $base/functions/acquire-lock.sql
38
+ run_psql_file $base/functions/acquire-lock.sql
42
39
 
43
40
  echo "» category function"
44
- psql $database -q -f $base/functions/category.sql
41
+ run_psql_file $base/functions/category.sql
45
42
 
46
43
  echo "» is_category function"
47
- psql $database -q -f $base/functions/is-category.sql
44
+ run_psql_file $base/functions/is-category.sql
48
45
 
49
46
  echo "» id function"
50
- psql $database -q -f $base/functions/id.sql
47
+ run_psql_file $base/functions/id.sql
51
48
 
52
49
  echo "» cardinal_id function"
53
- psql $database -q -f $base/functions/cardinal-id.sql
50
+ run_psql_file $base/functions/cardinal-id.sql
54
51
 
55
52
  echo "» stream_version function"
56
- psql $database -q -f $base/functions/stream-version.sql
53
+ run_psql_file $base/functions/stream-version.sql
57
54
 
58
55
  echo "» write_message function"
59
- psql $database -q -f $base/functions/write-message.sql
56
+ run_psql_file $base/functions/write-message.sql
60
57
 
61
58
  echo "» get_stream_messages function"
62
- psql $database -q -f $base/functions/get-stream-messages.sql
59
+ run_psql_file $base/functions/get-stream-messages.sql
63
60
 
64
61
  echo "» get_category_messages function"
65
- psql $database -q -f $base/functions/get-category-messages.sql
62
+ run_psql_file $base/functions/get-category-messages.sql
66
63
 
67
64
  echo "» get_last_stream_message function"
68
- psql $database -q -f $base/functions/get-last-stream-message.sql
65
+ run_psql_file $base/functions/get-last-stream-message.sql
69
66
  }
70
67
 
71
68
  echo "Creating Types"
@@ -2,29 +2,33 @@
2
2
 
3
3
  set -e
4
4
 
5
+ if [ -z ${DATABASE_NAME+x} ]; then
6
+ database=message_store
7
+ echo "(DATABASE_NAME is not set. Using: $database.)"
8
+ else
9
+ database=$DATABASE_NAME
10
+ fi
11
+
12
+ function run_psql_file {
13
+ psql $database -q -v ON_ERROR_STOP=1 -f "$1"
14
+ }
15
+
5
16
  function script_dir {
6
17
  val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
18
  echo "$val"
8
19
  }
9
20
 
10
21
  function create-indexes {
11
- if [ -z ${DATABASE_NAME+x} ]; then
12
- database=message_store
13
- echo "(DATABASE_NAME is not set. Using: $database.)"
14
- else
15
- database=$DATABASE_NAME
16
- fi
17
-
18
22
  base=$(script_dir)
19
23
 
20
24
  echo "» messages_id index"
21
- psql $database -q -f $base/indexes/messages-id.sql
25
+ run_psql_file $base/indexes/messages-id.sql
22
26
 
23
27
  echo "» messages_stream index"
24
- psql $database -q -f $base/indexes/messages-stream.sql
28
+ run_psql_file $base/indexes/messages-stream.sql
25
29
 
26
30
  echo "» messages_category index"
27
- psql $database -q -f $base/indexes/messages-category.sql
31
+ run_psql_file $base/indexes/messages-category.sql
28
32
  }
29
33
 
30
34
  echo "Creating Indexes"
@@ -2,35 +2,39 @@
2
2
 
3
3
  set -e
4
4
 
5
+ if [ -z ${DATABASE_NAME+x} ]; then
6
+ database=message_store
7
+ echo "(DATABASE_NAME is not set. Using: $database.)"
8
+ else
9
+ database=$DATABASE_NAME
10
+ fi
11
+
12
+ function run_psql_file {
13
+ psql $database -q -v ON_ERROR_STOP=1 -f "$1"
14
+ }
15
+
5
16
  function script_dir {
6
17
  val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
18
  echo "$val"
8
19
  }
9
20
 
10
21
  function grant-privileges {
11
- if [ -z ${DATABASE_NAME+x} ]; then
12
- database=message_store
13
- echo "(DATABASE_NAME is not set. Using: $database.)"
14
- else
15
- database=$DATABASE_NAME
16
- fi
17
-
18
22
  base=$(script_dir)
19
23
 
20
24
  echo "» schema privileges"
21
- psql $database -q -f $base/privileges/schema.sql
25
+ run_psql_file $base/privileges/schema.sql
22
26
 
23
27
  echo "» messages table privileges"
24
- psql $database -q -f $base/privileges/table.sql
28
+ run_psql_file $base/privileges/table.sql
25
29
 
26
30
  echo "» sequence privileges"
27
- psql $database -q -f $base/privileges/sequence.sql
31
+ run_psql_file $base/privileges/sequence.sql
28
32
 
29
33
  echo "» functions privileges"
30
- psql $database -q -f $base/privileges/functions.sql
34
+ run_psql_file $base/privileges/functions.sql
31
35
 
32
36
  echo "» views privileges"
33
- psql $database -q -f $base/privileges/views.sql
37
+ run_psql_file $base/privileges/views.sql
34
38
  }
35
39
 
36
40
  echo "Granting Privileges"
@@ -2,38 +2,42 @@
2
2
 
3
3
  set -e
4
4
 
5
+ if [ -z ${DATABASE_NAME+x} ]; then
6
+ database=message_store
7
+ echo "(DATABASE_NAME is not set. Using: $database.)"
8
+ else
9
+ database=$DATABASE_NAME
10
+ fi
11
+
12
+ function run_psql_file {
13
+ psql $database -q -v ON_ERROR_STOP=1 -f "$1"
14
+ }
15
+
5
16
  function script_dir {
6
17
  val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
18
  echo "$val"
8
19
  }
9
20
 
10
21
  function create-views {
11
- if [ -z ${DATABASE_NAME+x} ]; then
12
- database=message_store
13
- echo "(DATABASE_NAME is not set. Using: $database.)"
14
- else
15
- database=$DATABASE_NAME
16
- fi
17
-
18
22
  base=$(script_dir)
19
23
 
20
24
  echo "» stream_summary view"
21
- psql $database -q -f $base/views/stream-summary.sql
25
+ run_psql_file $base/views/stream-summary.sql
22
26
 
23
27
  echo "» type_summary view"
24
- psql $database -q -f $base/views/type-summary.sql
28
+ run_psql_file $base/views/type-summary.sql
25
29
 
26
30
  echo "» stream_type_summary view"
27
- psql $database -q -f $base/views/stream-type-summary.sql
31
+ run_psql_file $base/views/stream-type-summary.sql
28
32
 
29
33
  echo "» type_stream_summary view"
30
- psql $database -q -f $base/views/type-stream-summary.sql
34
+ run_psql_file $base/views/type-stream-summary.sql
31
35
 
32
36
  echo "» category_type_summary view"
33
- psql $database -q -f $base/views/category-type-summary.sql
37
+ run_psql_file $base/views/category-type-summary.sql
34
38
 
35
39
  echo "» type_category_summary view"
36
- psql $database -q -f $base/views/type-category-summary.sql
40
+ run_psql_file $base/views/type-category-summary.sql
37
41
  }
38
42
 
39
43
  echo "Creating Views"
data/database/install.sh CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  set -e
4
4
 
5
+ function run_psql {
6
+ psql -q -v ON_ERROR_STOP=1 "$@"
7
+ }
8
+
5
9
  function script_dir {
6
10
  val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
11
  echo "$val"
@@ -41,7 +45,7 @@ function create-user {
41
45
  base=$(script_dir)
42
46
 
43
47
  echo "» message_store role"
44
- psql postgres -q -f $base/roles/message-store.sql
48
+ run_psql postgres -f $base/roles/message-store.sql
45
49
  }
46
50
 
47
51
  function create-database {
@@ -51,21 +55,21 @@ function create-database {
51
55
 
52
56
  function create-schema {
53
57
  echo "» message_store schema"
54
- psql $database -q -f $base/schema/message-store.sql
58
+ run_psql $database -f $base/schema/message-store.sql
55
59
  }
56
60
 
57
61
  function create-extensions {
58
62
  base=$(script_dir)
59
63
 
60
64
  echo "» pgcrypto extension"
61
- psql $database -q -f $base/extensions/pgcrypto.sql
65
+ run_psql $database -f $base/extensions/pgcrypto.sql
62
66
  }
63
67
 
64
68
  function create-table {
65
69
  base=$(script_dir)
66
70
 
67
71
  echo "» messages table"
68
- psql $database -q -f $base/tables/messages.sql
72
+ run_psql $database -f $base/tables/messages.sql
69
73
  }
70
74
 
71
75
  echo
@@ -30,15 +30,19 @@ else
30
30
  echo "Category is: $CATEGORY"
31
31
  fi
32
32
 
33
+ function run_psql_command {
34
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "$1"
35
+ }
36
+
33
37
  echo
34
38
  echo "Category Type Summary"
35
39
  echo "= = ="
36
40
  echo
37
41
 
38
42
  if [ -z $category ]; then
39
- psql $database -U $user -P pager=off -c "SELECT * FROM category_type_summary;"
40
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages;"
43
+ run_psql_command "SELECT * FROM category_type_summary;"
44
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages;"
41
45
  else
42
- psql $database -U $user -P pager=off -c "SELECT * FROM category_type_summary WHERE category LIKE '%$category%';"
43
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages WHERE category(stream_name) LIKE '%$category%';"
46
+ run_psql_command "SELECT * FROM category_type_summary WHERE category LIKE '%$category%';"
47
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages WHERE category(stream_name) LIKE '%$category%';"
44
48
  fi
@@ -29,4 +29,4 @@ default_table_name=messages
29
29
 
30
30
  echo
31
31
 
32
- psql $database -U $user -P pager=off -c "SELECT message_store_version();"
32
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "SELECT message_store_version();"
@@ -35,10 +35,14 @@ else
35
35
  echo "Stream name is: $STREAM_NAME"
36
36
  fi
37
37
 
38
+ function run_psql_command {
39
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -x -c "$1"
40
+ }
41
+
38
42
  echo
39
43
 
40
44
  if [ -z $stream_name ]; then
41
- psql $database -U $user -x -P pager=off -c "SELECT * FROM messages ORDER BY global_position ASC"
45
+ run_psql_command "SELECT * FROM messages ORDER BY global_position ASC"
42
46
  else
43
- psql $database -U $user -x -P pager=off -c "SELECT * FROM messages WHERE stream_name = '$stream_name' ORDER BY global_position ASC"
47
+ run_psql_command "SELECT * FROM messages WHERE stream_name = '$stream_name' ORDER BY global_position ASC"
44
48
  fi
@@ -30,15 +30,19 @@ else
30
30
  echo "Stream name is: $STREAM_NAME"
31
31
  fi
32
32
 
33
+ function run_psql_command {
34
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "$1"
35
+ }
36
+
33
37
  echo
34
38
  echo "Stream Summary"
35
39
  echo "= = ="
36
40
  echo
37
41
 
38
42
  if [ -z $stream_name ]; then
39
- psql $database -U $user -P pager=off -c "SELECT * FROM stream_summary ORDER BY message_count DESC;"
40
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages;"
43
+ run_psql_command "SELECT * FROM stream_summary ORDER BY message_count DESC;"
44
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages;"
41
45
  else
42
- psql $database -U $user -P pager=off -c "SELECT * FROM stream_summary WHERE stream_name LIKE '%$stream_name%' ORDER BY message_count DESC;"
43
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages WHERE stream_name LIKE '%$stream_name%';"
46
+ run_psql_command "SELECT * FROM stream_summary WHERE stream_name LIKE '%$stream_name%' ORDER BY message_count DESC;"
47
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages WHERE stream_name LIKE '%$stream_name%';"
44
48
  fi
@@ -30,15 +30,19 @@ else
30
30
  echo "Stream name is: $STREAM_NAME"
31
31
  fi
32
32
 
33
+ function run_psql_command {
34
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "$1"
35
+ }
36
+
33
37
  echo
34
38
  echo "Stream Type Summary"
35
39
  echo "= = ="
36
40
  echo
37
41
 
38
42
  if [ -z $stream_name ]; then
39
- psql $database -U $user -P pager=off -c "SELECT * FROM stream_type_summary ORDER BY stream_name, message_count DESC, type;"
40
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages;"
43
+ run_psql_command "SELECT * FROM stream_type_summary ORDER BY stream_name, message_count DESC, type;"
44
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages;"
41
45
  else
42
- psql $database -U $user -P pager=off -c "SELECT * FROM stream_type_summary WHERE stream_name LIKE '%$stream_name%' ORDER BY stream_name, message_count DESC;"
43
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages WHERE stream_name LIKE '%$stream_name%';"
46
+ run_psql_command "SELECT * FROM stream_type_summary WHERE stream_name LIKE '%$stream_name%' ORDER BY stream_name, message_count DESC;"
47
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages WHERE stream_name LIKE '%$stream_name%';"
44
48
  fi
@@ -30,15 +30,19 @@ else
30
30
  echo "Type is: $TYPE"
31
31
  fi
32
32
 
33
+ function run_psql_command {
34
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "$1"
35
+ }
36
+
33
37
  echo
34
38
  echo "Type Category Summary"
35
39
  echo "= = ="
36
40
  echo
37
41
 
38
42
  if [ -z $type ]; then
39
- psql $database -U $user -P pager=off -c "SELECT * FROM type_category_summary;"
40
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages;"
43
+ run_psql_command "SELECT * FROM type_category_summary;"
44
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages;"
41
45
  else
42
- psql $database -U $user -P pager=off -c "SELECT * FROM type_category_summary WHERE type LIKE '%$type%';"
43
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages WHERE type LIKE '%$type%';"
46
+ run_psql_command "SELECT * FROM type_category_summary WHERE type LIKE '%$type%';"
47
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages WHERE type LIKE '%$type%';"
44
48
  fi
@@ -30,15 +30,19 @@ else
30
30
  echo "Type is: $TYPE"
31
31
  fi
32
32
 
33
+ function run_psql_command {
34
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "$1"
35
+ }
36
+
33
37
  echo
34
38
  echo "Type Stream Summary"
35
39
  echo "= = ="
36
40
  echo
37
41
 
38
42
  if [ -z $type ]; then
39
- psql $database -U $user -P pager=off -c "SELECT * FROM type_stream_summary ORDER BY type, message_count DESC, stream_name;"
40
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages;"
43
+ run_psql_command "SELECT * FROM type_stream_summary ORDER BY type, message_count DESC, stream_name;"
44
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages;"
41
45
  else
42
- psql $database -U $user -P pager=off -c "SELECT * FROM type_stream_summary WHERE type LIKE '%$type%' ORDER BY type, message_count DESC, stream_name;"
43
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages WHERE type LIKE '%$type%';"
46
+ run_psql_command "SELECT * FROM type_stream_summary WHERE type LIKE '%$type%' ORDER BY type, message_count DESC, stream_name;"
47
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages WHERE type LIKE '%$type%';"
44
48
  fi
@@ -30,15 +30,19 @@ else
30
30
  echo "Type is: $TYPE"
31
31
  fi
32
32
 
33
+ function run_psql_command {
34
+ psql $database -v ON_ERROR_STOP=1 -U $user -P pager=off -c "$1"
35
+ }
36
+
33
37
  echo
34
38
  echo "Type Summary"
35
39
  echo "= = ="
36
40
  echo
37
41
 
38
42
  if [ -z $type ]; then
39
- psql $database -U $user -P pager=off -c "SELECT * FROM type_summary ORDER BY message_count DESC;"
40
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages;"
43
+ run_psql_command "SELECT * FROM type_summary ORDER BY message_count DESC;"
44
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages;"
41
45
  else
42
- psql $database -U $user -P pager=off -c "SELECT * FROM type_summary WHERE type LIKE '%$type%' ORDER BY message_count DESC;"
43
- psql $database -U $user -P pager=off -c "SELECT COUNT(*) AS total_count FROM messages WHERE type LIKE '%$type%';"
46
+ run_psql_command "SELECT * FROM type_summary WHERE type LIKE '%$type%' ORDER BY message_count DESC;"
47
+ run_psql_command "SELECT COUNT(*) AS total_count FROM messages WHERE type LIKE '%$type%';"
44
48
  fi
@@ -4,7 +4,7 @@ GRANT EXECUTE ON FUNCTION message_store.acquire_lock(varchar) TO message_store;
4
4
  GRANT EXECUTE ON FUNCTION message_store.cardinal_id(varchar) TO message_store;
5
5
  GRANT EXECUTE ON FUNCTION message_store.category(varchar) TO message_store;
6
6
  GRANT EXECUTE ON FUNCTION message_store.get_category_messages(varchar, bigint, bigint, varchar, bigint, bigint, varchar) TO message_store;
7
- GRANT EXECUTE ON FUNCTION message_store.get_last_stream_message(varchar) TO message_store;
7
+ GRANT EXECUTE ON FUNCTION message_store.get_last_stream_message(varchar, varchar) TO message_store;
8
8
  GRANT EXECUTE ON FUNCTION message_store.get_stream_messages(varchar, bigint, bigint, varchar) TO message_store;
9
9
  GRANT EXECUTE ON FUNCTION message_store.hash_64(varchar) TO message_store;
10
10
  GRANT EXECUTE ON FUNCTION message_store.id(varchar) TO message_store;
@@ -2,6 +2,10 @@
2
2
 
3
3
  set -e
4
4
 
5
+ function run_psql_command {
6
+ psql -q -v ON_ERROR_STOP=1 -P pager=off postgres -c "$1"
7
+ }
8
+
5
9
  function script_dir {
6
10
  val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
11
  echo "$val"
@@ -28,12 +32,12 @@ fi
28
32
 
29
33
  function delete-user {
30
34
  echo "» message_store user"
31
- psql postgres -P pager=off -q -c "DROP ROLE IF EXISTS message_store;"
35
+ run_psql_command "DROP ROLE IF EXISTS message_store;"
32
36
  }
33
37
 
34
38
  function delete-database {
35
39
  echo "» $database database"
36
- psql postgres -P pager=off -q -c "DROP DATABASE IF EXISTS \"$database\";"
40
+ run_psql_command "DROP DATABASE IF EXISTS \"$database\";"
37
41
  }
38
42
 
39
43
  echo "Deleting database"
@@ -0,0 +1,13 @@
1
+ # 1.3.0 Update
2
+
3
+ Note: There are no backward-incompatible changes in this update.
4
+
5
+ For more information about Message DB update scripts, see:
6
+
7
+ [http://docs.eventide-project.org/user-guide/message-db/update.html](http://docs.eventide-project.org/user-guide/message-db/update.html)
8
+
9
+ The following changes are made by the v1.3.0 update script:
10
+
11
+ - The `get_last_stream_message` function is replaced with an implementation that receives the additional `type` argument that constrains the result to the last message of a stream of a specified message type (see: [http://docs.eventide-project.org/user-guide/message-db/server-functions.html#get-last-message-from-a-stream](http://docs.eventide-project.org/user-guide/message-db/server-functions.html#get-last-message-from-a-stream))
12
+ - Grants the execution privilege for the new `get_last_stream_message` function implementation to the `message_store` role
13
+ - The database installation scripts terminate on error, rather than proceeding with the rest of the installation when a script error occurs, as was the case with previous versions
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ echo
6
+ echo "Message DB"
7
+ echo
8
+ echo "Update the message_store database to v1.3.0"
9
+ echo
10
+ echo "Fore more information about the changes made to the message store by"
11
+ echo "this update, see: https://github.com/message-db/message-db/blob/master/database/update/1.3.0.md"
12
+ echo
13
+ echo "- Press CTRL+C to cancel"
14
+ echo "- Press RETURN to proceed with the update"
15
+ echo
16
+
17
+ read
18
+
19
+ function run_psql {
20
+ psql $database -q -v ON_ERROR_STOP=1 -c "$@"
21
+ }
22
+
23
+ function run_psql_file {
24
+ psql $database -q -v ON_ERROR_STOP=1 -f "$1"
25
+ }
26
+
27
+ function script_dir {
28
+ val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
29
+ echo "$val"
30
+ }
31
+
32
+ base="$(script_dir)/.."
33
+ echo $base
34
+
35
+ echo
36
+ echo "Updating Database"
37
+ echo "Version: 1.3.0"
38
+ echo "= = ="
39
+
40
+ if [ -z ${DATABASE_NAME+x} ]; then
41
+ echo "(DATABASE_NAME is not set. Default will be used.)"
42
+ database=message_store
43
+ export DATABASE_NAME=$database
44
+ else
45
+ database=$DATABASE_NAME
46
+ fi
47
+ echo
48
+
49
+ if [ -z ${PGOPTIONS+x} ]; then
50
+ export PGOPTIONS='-c client_min_messages=warning'
51
+ fi
52
+
53
+ function delete-functions {
54
+ echo "» get_last_message function"
55
+ run_psql "DROP FUNCTION IF EXISTS message_store.get_last_stream_message(varchar) CASCADE";
56
+
57
+ echo "» message_store_version function"
58
+ run_psql "DROP FUNCTION IF EXISTS message_store.message_store_version CASCADE";
59
+ }
60
+
61
+ function install-functions {
62
+ echo "» get_last_stream_message function"
63
+ run_psql_file $base/functions/get-last-stream-message.sql
64
+
65
+ echo "» message_store_version function"
66
+ run_psql_file $base/functions/message-store-version.sql
67
+ }
68
+
69
+ function grant-privileges {
70
+ echo "» get_last_stream_message function privilege"
71
+ run_psql "GRANT EXECUTE ON FUNCTION message_store.get_last_stream_message(varchar, varchar) TO message_store;"
72
+
73
+ echo "» message_store_version function"
74
+ run_psql "GRANT EXECUTE ON FUNCTION message_store.message_store_version TO message_store;"
75
+ }
76
+
77
+ echo "Deleting Functions"
78
+ echo "- - -"
79
+ delete-functions
80
+ echo
81
+
82
+ echo "Installing Functions"
83
+ echo "- - -"
84
+ install-functions
85
+ echo
86
+
87
+ echo "Granting Privileges to the Function"
88
+ echo "- - -"
89
+ grant-privileges
90
+ echo
91
+
92
+ echo "= = ="
93
+ echo "Done Updating Database"
94
+ echo "Version: 1.3.0"
95
+ echo
@@ -1,6 +1,10 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- set -u
3
+ set -ue
4
+
5
+ function run_psql {
6
+ psql -v ON_ERROR_STOP=1 "$@"
7
+ }
4
8
 
5
9
  instances=1
6
10
  if [ ! -z ${INSTANCES+x} ]; then
@@ -13,6 +17,11 @@ if [ ! -z ${STREAM_NAME+x} ]; then
13
17
  stream_name=$STREAM_NAME
14
18
  fi
15
19
 
20
+ type="SomeType"
21
+ if [ ! -z ${TYPE+x} ]; then
22
+ type=$TYPE
23
+ fi
24
+
16
25
  title="Writing $instances Messages to Stream $stream_name"
17
26
  if [ -z ${METADATA+x} ]; then
18
27
  metadata="'{\"metaAttribute\": \"some meta value\"}'"
@@ -53,11 +62,11 @@ for (( i=1; i<=instances; i++ )); do
53
62
 
54
63
  echo "Instance: $i, Message ID: $uuid"
55
64
 
56
- psql $database -U $user -c "SELECT write_message('$uuid'::varchar, '$stream_name'::varchar, 'SomeType'::varchar, '{\"attribute\": \"some value\"}'::jsonb, $metadata);" > /dev/null
65
+ run_psql $database -U $user -c "SELECT write_message('$uuid'::varchar, '$stream_name'::varchar, '$type'::varchar, '{\"attribute\": \"some value\"}'::jsonb, $metadata);" > /dev/null
57
66
  done
58
67
 
59
68
 
60
69
  echo
61
- psql $database -U $user -P pager=off -x -c "SELECT * FROM messages WHERE stream_name = '$stream_name';"
70
+ run_psql $database -U $user -P pager=off -x -c "SELECT * FROM messages WHERE stream_name = '$stream_name';"
62
71
 
63
72
  echo
metadata CHANGED
@@ -1,36 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: message-db
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.6
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: scripts
10
10
  cert_chain: []
11
- date: 2021-03-14 00:00:00.000000000 Z
11
+ date: 2022-10-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " "
14
14
  email: opensource@eventide-project.org
15
15
  executables:
16
- - mdb-print-stream-summary
16
+ - mdb-clear-messages
17
17
  - mdb-create-db
18
- - mdb-print-type-category-summary
19
- - mdb-install-views
20
18
  - mdb-delete-db
21
- - mdb-print-type-summary
22
- - mdb-print-stream-type-summary
19
+ - mdb-install-functions
20
+ - mdb-install-indexes
23
21
  - mdb-install-privileges
24
- - mdb-recreate-db
25
- - mdb-print-messages
26
- - mdb-print-message-store-version
22
+ - mdb-install-views
23
+ - mdb-print-category-type-summary
27
24
  - mdb-print-database-scripts-dir
25
+ - mdb-print-message-store-version
26
+ - mdb-print-messages
27
+ - mdb-print-stream-summary
28
+ - mdb-print-stream-type-summary
29
+ - mdb-print-type-category-summary
28
30
  - mdb-print-type-stream-summary
31
+ - mdb-print-type-summary
32
+ - mdb-recreate-db
29
33
  - mdb-write-test-message
30
- - mdb-install-indexes
31
- - mdb-install-functions
32
- - mdb-clear-messages
33
- - mdb-print-category-type-summary
34
34
  extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
@@ -83,6 +83,8 @@ files:
83
83
  - database/update/1.0.0.sh
84
84
  - database/update/1.2.2.md
85
85
  - database/update/1.2.2.sh
86
+ - database/update/1.3.0.md
87
+ - database/update/1.3.0.sh
86
88
  - database/views/category-type-summary.sql
87
89
  - database/views/stream-summary.sql
88
90
  - database/views/stream-type-summary.sql
@@ -127,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
129
  - !ruby/object:Gem::Version
128
130
  version: '0'
129
131
  requirements: []
130
- rubygems_version: 3.1.2
132
+ rubygems_version: 3.3.3
131
133
  signing_key:
132
134
  specification_version: 4
133
135
  summary: Microservice native event store and message store for Postgres