knex 2.5.0 → 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.
Files changed (190) hide show
  1. package/CHANGELOG.md +78 -59
  2. package/CONTRIBUTING.md +194 -194
  3. package/LICENSE +22 -22
  4. package/README.md +149 -147
  5. package/UPGRADING.md +245 -233
  6. package/bin/cli.js +475 -473
  7. package/bin/utils/cli-config-utils.js +212 -210
  8. package/bin/utils/constants.js +7 -7
  9. package/bin/utils/migrationsLister.js +37 -37
  10. package/knex.js +23 -23
  11. package/knex.mjs +11 -11
  12. package/lib/builder-interface-augmenter.js +120 -120
  13. package/lib/client.js +495 -495
  14. package/lib/constants.js +61 -61
  15. package/lib/dialects/better-sqlite3/index.js +77 -77
  16. package/lib/dialects/cockroachdb/crdb-columncompiler.js +14 -14
  17. package/lib/dialects/cockroachdb/crdb-querybuilder.js +11 -11
  18. package/lib/dialects/cockroachdb/crdb-querycompiler.js +122 -122
  19. package/lib/dialects/cockroachdb/crdb-tablecompiler.js +37 -37
  20. package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
  21. package/lib/dialects/cockroachdb/index.js +86 -86
  22. package/lib/dialects/mssql/index.js +500 -500
  23. package/lib/dialects/mssql/mssql-formatter.js +34 -34
  24. package/lib/dialects/mssql/query/mssql-querycompiler.js +601 -601
  25. package/lib/dialects/mssql/schema/mssql-columncompiler.js +185 -185
  26. package/lib/dialects/mssql/schema/mssql-compiler.js +91 -91
  27. package/lib/dialects/mssql/schema/mssql-tablecompiler.js +378 -378
  28. package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
  29. package/lib/dialects/mssql/transaction.js +176 -176
  30. package/lib/dialects/mysql/index.js +201 -201
  31. package/lib/dialects/mysql/query/mysql-querycompiler.js +274 -274
  32. package/lib/dialects/mysql/schema/mysql-columncompiler.js +193 -193
  33. package/lib/dialects/mysql/schema/mysql-compiler.js +60 -60
  34. package/lib/dialects/mysql/schema/mysql-tablecompiler.js +381 -381
  35. package/lib/dialects/mysql/schema/mysql-viewbuilder.js +21 -21
  36. package/lib/dialects/mysql/schema/mysql-viewcompiler.js +15 -15
  37. package/lib/dialects/mysql/transaction.js +46 -46
  38. package/lib/dialects/mysql2/index.js +53 -53
  39. package/lib/dialects/mysql2/transaction.js +44 -44
  40. package/lib/dialects/oracle/DEAD_CODE.md +5 -5
  41. package/lib/dialects/oracle/index.js +92 -92
  42. package/lib/dialects/oracle/query/oracle-querycompiler.js +343 -343
  43. package/lib/dialects/oracle/schema/internal/incrementUtils.js +20 -20
  44. package/lib/dialects/oracle/schema/internal/trigger.js +135 -135
  45. package/lib/dialects/oracle/schema/oracle-columnbuilder.js +17 -17
  46. package/lib/dialects/oracle/schema/oracle-columncompiler.js +126 -126
  47. package/lib/dialects/oracle/schema/oracle-compiler.js +122 -122
  48. package/lib/dialects/oracle/schema/oracle-tablecompiler.js +190 -190
  49. package/lib/dialects/oracle/utils.js +87 -87
  50. package/lib/dialects/oracledb/index.js +327 -327
  51. package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
  52. package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +61 -61
  53. package/lib/dialects/oracledb/schema/oracledb-tablecompiler.js +19 -19
  54. package/lib/dialects/oracledb/schema/oracledb-viewbuilder.js +13 -13
  55. package/lib/dialects/oracledb/schema/oracledb-viewcompiler.js +19 -19
  56. package/lib/dialects/oracledb/transaction.js +98 -98
  57. package/lib/dialects/oracledb/utils.js +208 -208
  58. package/lib/dialects/pgnative/index.js +60 -60
  59. package/lib/dialects/postgres/execution/pg-transaction.js +19 -19
  60. package/lib/dialects/postgres/index.js +358 -358
  61. package/lib/dialects/postgres/query/pg-querybuilder.js +43 -43
  62. package/lib/dialects/postgres/query/pg-querycompiler.js +400 -400
  63. package/lib/dialects/postgres/schema/pg-columncompiler.js +156 -156
  64. package/lib/dialects/postgres/schema/pg-compiler.js +138 -138
  65. package/lib/dialects/postgres/schema/pg-tablecompiler.js +304 -304
  66. package/lib/dialects/postgres/schema/pg-viewbuilder.js +21 -21
  67. package/lib/dialects/postgres/schema/pg-viewcompiler.js +35 -35
  68. package/lib/dialects/redshift/index.js +86 -86
  69. package/lib/dialects/redshift/query/redshift-querycompiler.js +163 -163
  70. package/lib/dialects/redshift/schema/redshift-columnbuilder.js +22 -22
  71. package/lib/dialects/redshift/schema/redshift-columncompiler.js +67 -67
  72. package/lib/dialects/redshift/schema/redshift-compiler.js +14 -14
  73. package/lib/dialects/redshift/schema/redshift-tablecompiler.js +122 -122
  74. package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
  75. package/lib/dialects/redshift/transaction.js +32 -32
  76. package/lib/dialects/sqlite3/execution/sqlite-transaction.js +25 -25
  77. package/lib/dialects/sqlite3/index.js +250 -250
  78. package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
  79. package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +334 -334
  80. package/lib/dialects/sqlite3/schema/ddl.js +400 -400
  81. package/lib/dialects/sqlite3/schema/internal/compiler.js +327 -327
  82. package/lib/dialects/sqlite3/schema/internal/parser-combinator.js +161 -161
  83. package/lib/dialects/sqlite3/schema/internal/parser.js +638 -638
  84. package/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js +41 -41
  85. package/lib/dialects/sqlite3/schema/internal/tokenizer.js +38 -38
  86. package/lib/dialects/sqlite3/schema/internal/utils.js +12 -12
  87. package/lib/dialects/sqlite3/schema/sqlite-columncompiler.js +50 -50
  88. package/lib/dialects/sqlite3/schema/sqlite-compiler.js +80 -80
  89. package/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js +347 -347
  90. package/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js +40 -40
  91. package/lib/execution/batch-insert.js +51 -51
  92. package/lib/execution/internal/delay.js +6 -6
  93. package/lib/execution/internal/ensure-connection-callback.js +41 -41
  94. package/lib/execution/internal/query-executioner.js +62 -62
  95. package/lib/execution/runner.js +325 -325
  96. package/lib/execution/transaction.js +409 -409
  97. package/lib/formatter/formatterUtils.js +42 -42
  98. package/lib/formatter/rawFormatter.js +84 -84
  99. package/lib/formatter/wrappingFormatter.js +250 -250
  100. package/lib/formatter.js +25 -25
  101. package/lib/index.js +3 -3
  102. package/lib/knex-builder/FunctionHelper.js +80 -80
  103. package/lib/knex-builder/Knex.js +59 -59
  104. package/lib/knex-builder/internal/config-resolver.js +57 -57
  105. package/lib/knex-builder/internal/parse-connection.js +87 -87
  106. package/lib/knex-builder/make-knex.js +345 -345
  107. package/lib/logger.js +76 -76
  108. package/lib/migrations/common/MigrationsLoader.js +36 -36
  109. package/lib/migrations/migrate/MigrationGenerator.js +84 -84
  110. package/lib/migrations/migrate/Migrator.js +599 -598
  111. package/lib/migrations/migrate/migrate-stub.js +17 -17
  112. package/lib/migrations/migrate/migration-list-resolver.js +33 -33
  113. package/lib/migrations/migrate/migrator-configuration-merger.js +58 -58
  114. package/lib/migrations/migrate/sources/fs-migrations.js +74 -74
  115. package/lib/migrations/migrate/stub/cjs.stub +15 -15
  116. package/lib/migrations/migrate/stub/coffee.stub +13 -13
  117. package/lib/migrations/migrate/stub/eg.stub +14 -14
  118. package/lib/migrations/migrate/stub/js-schema.stub +22 -22
  119. package/lib/migrations/migrate/stub/js.stub +22 -22
  120. package/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
  121. package/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
  122. package/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
  123. package/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
  124. package/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
  125. package/lib/migrations/migrate/stub/ls.stub +14 -14
  126. package/lib/migrations/migrate/stub/mjs.stub +23 -23
  127. package/lib/migrations/migrate/stub/ts-schema.stub +21 -21
  128. package/lib/migrations/migrate/stub/ts.stub +21 -21
  129. package/lib/migrations/migrate/table-creator.js +77 -77
  130. package/lib/migrations/migrate/table-resolver.js +27 -27
  131. package/lib/migrations/seed/Seeder.js +137 -137
  132. package/lib/migrations/seed/seed-stub.js +13 -13
  133. package/lib/migrations/seed/seeder-configuration-merger.js +60 -60
  134. package/lib/migrations/seed/sources/fs-seeds.js +65 -65
  135. package/lib/migrations/seed/stub/coffee.stub +9 -9
  136. package/lib/migrations/seed/stub/eg.stub +11 -11
  137. package/lib/migrations/seed/stub/js.stub +13 -13
  138. package/lib/migrations/seed/stub/ls.stub +11 -11
  139. package/lib/migrations/seed/stub/mjs.stub +12 -12
  140. package/lib/migrations/seed/stub/ts.stub +13 -13
  141. package/lib/migrations/util/fs.js +86 -86
  142. package/lib/migrations/util/import-file.js +12 -12
  143. package/lib/migrations/util/is-module-type.js +9 -9
  144. package/lib/migrations/util/template.js +52 -52
  145. package/lib/migrations/util/timestamp.js +14 -14
  146. package/lib/query/analytic.js +52 -52
  147. package/lib/query/constants.js +15 -15
  148. package/lib/query/joinclause.js +270 -270
  149. package/lib/query/method-constants.js +136 -136
  150. package/lib/query/querybuilder.js +1793 -1793
  151. package/lib/query/querycompiler.js +1591 -1591
  152. package/lib/raw.js +139 -139
  153. package/lib/ref.js +39 -39
  154. package/lib/schema/builder.js +115 -115
  155. package/lib/schema/columnbuilder.js +146 -146
  156. package/lib/schema/columncompiler.js +307 -307
  157. package/lib/schema/compiler.js +187 -187
  158. package/lib/schema/internal/helpers.js +55 -55
  159. package/lib/schema/tablebuilder.js +376 -376
  160. package/lib/schema/tablecompiler.js +433 -433
  161. package/lib/schema/viewbuilder.js +92 -92
  162. package/lib/schema/viewcompiler.js +138 -138
  163. package/lib/util/finally-mixin.js +13 -13
  164. package/lib/util/helpers.js +95 -95
  165. package/lib/util/is.js +32 -32
  166. package/lib/util/nanoid.js +40 -40
  167. package/lib/util/noop.js +1 -1
  168. package/lib/util/save-async-stack.js +14 -14
  169. package/lib/util/security.js +26 -26
  170. package/lib/util/string.js +190 -190
  171. package/lib/util/timeout.js +29 -29
  172. package/package.json +13 -12
  173. package/scripts/build.js +125 -125
  174. package/scripts/clean.js +31 -31
  175. package/scripts/docker-compose.yml +152 -152
  176. package/scripts/next-release-howto.md +24 -24
  177. package/scripts/oracledb-install-driver-libs.sh +82 -82
  178. package/scripts/release.sh +36 -34
  179. package/scripts/runkit-example.js +35 -34
  180. package/scripts/stress-test/README.txt +18 -18
  181. package/scripts/stress-test/docker-compose.yml +57 -57
  182. package/scripts/stress-test/knex-stress-test.js +212 -208
  183. package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +149 -145
  184. package/scripts/stress-test/mysql2-sudden-exit-without-error.js +101 -100
  185. package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +188 -184
  186. package/scripts/update_gitignore_for_tsc_output.js +90 -90
  187. package/types/index.d.ts +3272 -3273
  188. package/types/result.d.ts +27 -27
  189. package/types/tables.d.ts +4 -4
  190. package/lib/dialects/index.js +0 -34
@@ -1,152 +1,152 @@
1
- version: '3'
2
-
3
- services:
4
- mssql:
5
- image: mcr.microsoft.com/mssql/server:2019-latest
6
- ports:
7
- - '21433:1433'
8
- environment:
9
- - ACCEPT_EULA=Y
10
- - SA_PASSWORD=S0meVeryHardPassword
11
- healthcheck:
12
- test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
13
- waitmssql:
14
- image: mcr.microsoft.com/mssql/server:2017-latest
15
- links:
16
- - mssql
17
- depends_on:
18
- - mssql
19
- entrypoint:
20
- - bash
21
- - -c
22
- # https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
23
- - 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P S0meVeryHardPassword -d master -Q "CREATE DATABASE knex_test; ALTER DATABASE knex_test SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE knex_test SET DELAYED_DURABILITY = FORCED"; do sleep 5; done'
24
-
25
- mysql:
26
- image: mysql
27
- # https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
28
- # https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
29
- # nosync only for unix, edit for local start on other systems
30
- command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
31
- ports:
32
- - '23306:3306'
33
- environment:
34
- - MYSQL_ROOT_PASSWORD=testrootpassword
35
- - MYSQL_DATABASE=knex_test
36
- - MYSQL_USER=testuser
37
- - MYSQL_PASSWORD=testpassword
38
- healthcheck:
39
- test:
40
- [
41
- 'CMD',
42
- '/usr/bin/mysql',
43
- '-hlocalhost',
44
- '-utestuser',
45
- '-ptestpassword',
46
- '-e',
47
- 'SELECT 1',
48
- ]
49
- interval: 30s
50
- timeout: 5s
51
- retries: 3
52
- restart: always
53
- volumes:
54
- - mysql_data:/var/lib/mysql
55
- waitmysql:
56
- image: mysql
57
- links:
58
- - mysql
59
- depends_on:
60
- - mysql
61
- entrypoint:
62
- - bash
63
- - -c
64
- - 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
65
-
66
- postgres:
67
- image: postgres:13-alpine
68
- # see https://www.postgresql.org/docs/current/non-durability.html
69
- command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
70
- ports:
71
- - '25432:5432'
72
- environment:
73
- - POSTGRES_USER=testuser
74
- - POSTGRES_PASSWORD=knextest
75
- - POSTGRES_DB=knex_test
76
- waitpostgres:
77
- image: postgres:13-alpine
78
- links:
79
- - postgres
80
- depends_on:
81
- - postgres
82
- entrypoint:
83
- - bash
84
- - -c
85
- - 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
86
-
87
- cockroachdb:
88
- image: cockroachdb/cockroach:latest-v21.2
89
- container_name: crdb
90
- hostname: crdb
91
- command: start-single-node --cluster-name=example-single-node --insecure
92
- ports:
93
- - "26257:26257"
94
- - "8080:8080"
95
-
96
- waitcockroachdb:
97
- container_name: crdb-init
98
- hostname: crdb-init
99
- image: timveil/cockroachdb-remote-client:latest
100
- environment:
101
- - COCKROACH_HOST=crdb:26257
102
- - COCKROACH_INSECURE=true
103
- - DATABASE_NAME=test
104
- depends_on:
105
- - cockroachdb
106
-
107
- pgnative:
108
- image: postgres:13-alpine
109
- # see https://www.postgresql.org/docs/current/non-durability.html
110
- command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
111
- ports:
112
- - '25433:5432'
113
- environment:
114
- - POSTGRES_USER=testuser
115
- - POSTGRES_PASSWORD=knextest
116
- - POSTGRES_DB=knex_test
117
- waitpgnative:
118
- image: postgres:13-alpine
119
- links:
120
- - pgnative
121
- depends_on:
122
- - pgnative
123
- entrypoint:
124
- - bash
125
- - -c
126
- - 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
127
-
128
- oracledb:
129
- image: quillbuilduser/oracle-18-xe
130
- container_name: oracledb_container
131
- ports:
132
- - '21521:1521'
133
- environment:
134
- - ORACLE_ALLOW_REMOTE=true
135
- waitoracledb:
136
- image: quillbuilduser/oracle-18-xe
137
- links:
138
- - oracledb
139
- depends_on:
140
- - oracledb
141
- environment:
142
- - ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
143
- entrypoint:
144
- - bash
145
- - -c
146
- - 'until /opt/oracle/product/18c/dbhomeXE/bin/sqlplus -s sys/Oracle18@oracledb/XE as sysdba <<< "SELECT 13376411 FROM DUAL; exit;" | grep "13376411"; do echo "Could not connect to oracle... sleep for a while"; sleep 5; done'
147
-
148
- volumes:
149
- mysql_data:
150
- driver_opts:
151
- type: tmpfs
152
- device: tmpfs
1
+ version: '3'
2
+
3
+ services:
4
+ mssql:
5
+ image: mcr.microsoft.com/mssql/server:2019-latest
6
+ ports:
7
+ - '21433:1433'
8
+ environment:
9
+ - ACCEPT_EULA=Y
10
+ - SA_PASSWORD=S0meVeryHardPassword
11
+ healthcheck:
12
+ test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
13
+ waitmssql:
14
+ image: mcr.microsoft.com/mssql/server:2017-latest
15
+ links:
16
+ - mssql
17
+ depends_on:
18
+ - mssql
19
+ entrypoint:
20
+ - bash
21
+ - -c
22
+ # https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
23
+ - 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P S0meVeryHardPassword -d master -Q "CREATE DATABASE knex_test; ALTER DATABASE knex_test SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE knex_test SET DELAYED_DURABILITY = FORCED"; do sleep 5; done'
24
+
25
+ mysql:
26
+ image: mysql
27
+ # https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
28
+ # https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
29
+ # nosync only for unix, edit for local start on other systems
30
+ command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
31
+ ports:
32
+ - '23306:3306'
33
+ environment:
34
+ - MYSQL_ROOT_PASSWORD=testrootpassword
35
+ - MYSQL_DATABASE=knex_test
36
+ - MYSQL_USER=testuser
37
+ - MYSQL_PASSWORD=testpassword
38
+ healthcheck:
39
+ test:
40
+ [
41
+ 'CMD',
42
+ '/usr/bin/mysql',
43
+ '-hlocalhost',
44
+ '-utestuser',
45
+ '-ptestpassword',
46
+ '-e',
47
+ 'SELECT 1',
48
+ ]
49
+ interval: 30s
50
+ timeout: 5s
51
+ retries: 3
52
+ restart: always
53
+ volumes:
54
+ - mysql_data:/var/lib/mysql
55
+ waitmysql:
56
+ image: mysql
57
+ links:
58
+ - mysql
59
+ depends_on:
60
+ - mysql
61
+ entrypoint:
62
+ - bash
63
+ - -c
64
+ - 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
65
+
66
+ postgres:
67
+ image: postgres:13-alpine
68
+ # see https://www.postgresql.org/docs/current/non-durability.html
69
+ command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
70
+ ports:
71
+ - '25432:5432'
72
+ environment:
73
+ - POSTGRES_USER=testuser
74
+ - POSTGRES_PASSWORD=knextest
75
+ - POSTGRES_DB=knex_test
76
+ waitpostgres:
77
+ image: postgres:13-alpine
78
+ links:
79
+ - postgres
80
+ depends_on:
81
+ - postgres
82
+ entrypoint:
83
+ - bash
84
+ - -c
85
+ - 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
86
+
87
+ cockroachdb:
88
+ image: cockroachdb/cockroach:latest-v21.2
89
+ container_name: crdb
90
+ hostname: crdb
91
+ command: start-single-node --cluster-name=example-single-node --insecure
92
+ ports:
93
+ - '26257:26257'
94
+ - '8080:8080'
95
+
96
+ waitcockroachdb:
97
+ container_name: crdb-init
98
+ hostname: crdb-init
99
+ image: timveil/cockroachdb-remote-client:latest
100
+ environment:
101
+ - COCKROACH_HOST=crdb:26257
102
+ - COCKROACH_INSECURE=true
103
+ - DATABASE_NAME=test
104
+ depends_on:
105
+ - cockroachdb
106
+
107
+ pgnative:
108
+ image: postgres:13-alpine
109
+ # see https://www.postgresql.org/docs/current/non-durability.html
110
+ command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
111
+ ports:
112
+ - '25433:5432'
113
+ environment:
114
+ - POSTGRES_USER=testuser
115
+ - POSTGRES_PASSWORD=knextest
116
+ - POSTGRES_DB=knex_test
117
+ waitpgnative:
118
+ image: postgres:13-alpine
119
+ links:
120
+ - pgnative
121
+ depends_on:
122
+ - pgnative
123
+ entrypoint:
124
+ - bash
125
+ - -c
126
+ - 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
127
+
128
+ oracledb:
129
+ image: quillbuilduser/oracle-18-xe
130
+ container_name: oracledb_container
131
+ ports:
132
+ - '21521:1521'
133
+ environment:
134
+ - ORACLE_ALLOW_REMOTE=true
135
+ waitoracledb:
136
+ image: quillbuilduser/oracle-18-xe
137
+ links:
138
+ - oracledb
139
+ depends_on:
140
+ - oracledb
141
+ environment:
142
+ - ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
143
+ entrypoint:
144
+ - bash
145
+ - -c
146
+ - 'until /opt/oracle/product/18c/dbhomeXE/bin/sqlplus -s sys/Oracle18@oracledb/XE as sysdba <<< "SELECT 13376411 FROM DUAL; exit;" | grep "13376411"; do echo "Could not connect to oracle... sleep for a while"; sleep 5; done'
147
+
148
+ volumes:
149
+ mysql_data:
150
+ driver_opts:
151
+ type: tmpfs
152
+ device: tmpfs
@@ -1,24 +1,24 @@
1
- # Checklist for crating knex @next releases
2
-
3
- 1. Go through all commits since the last release and add them to CHANGELOG.md under unreleased changes section.
4
- 2. Commit changes to CHANGELOG
5
- 3. Check that master compiles and tests are running fine (check also that CI tests are passing)
6
-
7
- ```sh
8
- npm run build
9
-
10
- # run bunch of tests, but skipping coverage which doesn't really work locally at least
11
- npm plaintest
12
- npm bin_test
13
- npm oracledb:test
14
- npm mssql:init
15
- npm mssql:test
16
- npm mssql:destroy
17
- ```
18
-
19
- 4. Update package.json version to be e.g. 0.16.0-next1 or 0.16.0-next2 and commit yo master
20
- 5. Publish it under @next tag
21
-
22
- ```sh
23
- npm publish --tag next
24
- ```
1
+ # Checklist for crating knex @next releases
2
+
3
+ 1. Go through all commits since the last release and add them to CHANGELOG.md under unreleased changes section.
4
+ 2. Commit changes to CHANGELOG
5
+ 3. Check that master compiles and tests are running fine (check also that CI tests are passing)
6
+
7
+ ```sh
8
+ npm run build
9
+
10
+ # run bunch of tests, but skipping coverage which doesn't really work locally at least
11
+ npm plaintest
12
+ npm bin_test
13
+ npm oracledb:test
14
+ npm mssql:init
15
+ npm mssql:test
16
+ npm mssql:destroy
17
+ ```
18
+
19
+ 4. Update package.json version to be e.g. 0.16.0-next1 or 0.16.0-next2 and commit yo master
20
+ 5. Publish it under @next tag
21
+
22
+ ```sh
23
+ npm publish --tag next
24
+ ```
@@ -1,82 +1,82 @@
1
- #!/usr/bin/env bash
2
-
3
- # Exit on error
4
- set -e
5
-
6
- # Directory constants
7
- repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
8
- exec_dir="$( pwd )"
9
- script_dir="$repo_dir/scripts/"
10
- docker_compose_file="$repo_dir/scripts/docker-compose.yml"
11
-
12
- help_text="
13
- Helper script to install oracle drivers on local linux machine from Oracle
14
- database container.
15
-
16
- oracledb-install-driver-libs.sh COMMAND
17
-
18
- COMMAND:
19
- run: Do the driver install.
20
- dry-run: Do the driver install but do not save any files.
21
- help: Print this menu.
22
-
23
- NOTES FOR USAGE:
24
- 1. This script is tested to work on Ubuntu 18.04 LTS.
25
- 2. This script requires you to have sudo capabilities so to use ldconfig.
26
- "
27
-
28
- # Main script logic
29
- cmd="$1"
30
-
31
- function main () {
32
- case "$1" in
33
- "run")
34
- printf "Starting run ...\n"
35
- do_install true
36
- exit 0
37
- ;;
38
- "dry-run")
39
- printf "Starting dry-run ...\n"
40
- do_install false
41
- exit 0
42
- ;;
43
- "help"|"--help"|"-h"|"")
44
- printf "$help_text"
45
- exit 0
46
- ;;
47
- *)
48
- printf "Unsupported command: $cmd\n"
49
- printf "Try running with 'help' to see supported commands.\n"
50
- exit 1
51
- ;;
52
- esac
53
- }
54
-
55
- function do_install () {
56
- do_changes="$1"
57
- printf "\nEnsuring oracle containers from docker-compose are up ...\n"
58
- docker-compose -f "$docker_compose_file" up --build -d oracledb
59
- docker-compose -f "$docker_compose_file" up waitoracledb
60
- printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n"
61
- sleep 15
62
- printf "\nInstalling oracle client libs to db container ...\n"
63
- set -x
64
- docker-compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
65
- docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils
66
- docker-compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient
67
- docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite
68
- set +x
69
- printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n"
70
- if [ "$do_changes" = "true" ]; then
71
- set -x
72
- docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/
73
- sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
74
- sudo ldconfig
75
- set +x
76
- else
77
- printf "(skipping because dry-run)\n"
78
- fi
79
- }
80
-
81
- # Start the bash app's main function
82
- main "$cmd"
1
+ #!/usr/bin/env bash
2
+
3
+ # Exit on error
4
+ set -e
5
+
6
+ # Directory constants
7
+ repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
8
+ exec_dir="$( pwd )"
9
+ script_dir="$repo_dir/scripts/"
10
+ docker_compose_file="$repo_dir/scripts/docker-compose.yml"
11
+
12
+ help_text="
13
+ Helper script to install oracle drivers on local linux machine from Oracle
14
+ database container.
15
+
16
+ oracledb-install-driver-libs.sh COMMAND
17
+
18
+ COMMAND:
19
+ run: Do the driver install.
20
+ dry-run: Do the driver install but do not save any files.
21
+ help: Print this menu.
22
+
23
+ NOTES FOR USAGE:
24
+ 1. This script is tested to work on Ubuntu 18.04 LTS.
25
+ 2. This script requires you to have sudo capabilities so to use ldconfig.
26
+ "
27
+
28
+ # Main script logic
29
+ cmd="$1"
30
+
31
+ function main () {
32
+ case "$1" in
33
+ "run")
34
+ printf "Starting run ...\n"
35
+ do_install true
36
+ exit 0
37
+ ;;
38
+ "dry-run")
39
+ printf "Starting dry-run ...\n"
40
+ do_install false
41
+ exit 0
42
+ ;;
43
+ "help"|"--help"|"-h"|"")
44
+ printf "$help_text"
45
+ exit 0
46
+ ;;
47
+ *)
48
+ printf "Unsupported command: $cmd\n"
49
+ printf "Try running with 'help' to see supported commands.\n"
50
+ exit 1
51
+ ;;
52
+ esac
53
+ }
54
+
55
+ function do_install () {
56
+ do_changes="$1"
57
+ printf "\nEnsuring oracle containers from docker-compose are up ...\n"
58
+ docker-compose -f "$docker_compose_file" up --build -d oracledb
59
+ docker-compose -f "$docker_compose_file" up waitoracledb
60
+ printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n"
61
+ sleep 15
62
+ printf "\nInstalling oracle client libs to db container ...\n"
63
+ set -x
64
+ docker-compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
65
+ docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils
66
+ docker-compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient
67
+ docker-compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite
68
+ set +x
69
+ printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n"
70
+ if [ "$do_changes" = "true" ]; then
71
+ set -x
72
+ docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/
73
+ sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
74
+ sudo ldconfig
75
+ set +x
76
+ else
77
+ printf "(skipping because dry-run)\n"
78
+ fi
79
+ }
80
+
81
+ # Start the bash app's main function
82
+ main "$cmd"
@@ -1,34 +1,36 @@
1
- #!/bin/bash -e
2
-
3
- changelog=node_modules/.bin/changelog
4
-
5
- update_version() {
6
- echo "$(node -p "p=require('./${1}');p.version='${2}';JSON.stringify(p,null,2)")" > $1
7
- echo "Updated ${1} version to ${2}"
8
- }
9
-
10
- current_version=$(node -p "require('./package').version")
11
-
12
- printf "Next version (current is $current_version)? "
13
- read next_version
14
-
15
- if ! [[ $next_version =~ ^[0-9]\.[0-9]+\.[0-9](-.+)? ]]; then
16
- echo "Version must be a valid semver string, e.g. 1.0.2 or 2.3.0-beta.1"
17
- exit 1
18
- fi
19
-
20
- next_ref="v$next_version"
21
-
22
- git add -u
23
-
24
- npm run build
25
- npm test
26
-
27
- update_version 'package.json' $next_version
28
-
29
- git commit -am "release $next_version"
30
- git tag $next_version
31
-
32
- git push --tags
33
-
34
- npm publish
1
+ #!/bin/bash -e
2
+
3
+ changelog=node_modules/.bin/changelog
4
+
5
+ update_version() {
6
+ echo "$(node -p "p=require('./${1}');p.version='${2}';JSON.stringify(p,null,2)")" > $1
7
+ echo "Updated ${1} version to ${2}"
8
+ }
9
+
10
+ current_version=$(node -p "require('./package').version")
11
+
12
+ printf "Next version (current is $current_version)? "
13
+ read next_version
14
+
15
+ if ! [[ $next_version =~ ^[0-9]\.[0-9]+\.[0-9](-.+)? ]]; then
16
+ echo "Version must be a valid semver string, e.g. 1.0.2 or 2.3.0-beta.1"
17
+ exit 1
18
+ fi
19
+
20
+ next_ref="v$next_version"
21
+
22
+ git add -u
23
+
24
+ npm run build
25
+ npm run format:check
26
+ npm run lint:everything
27
+ npm test
28
+
29
+ update_version 'package.json' $next_version
30
+
31
+ git commit -am "release $next_version"
32
+ git tag $next_version
33
+
34
+ git push --tags
35
+
36
+ npm publish
@@ -1,34 +1,35 @@
1
- require('sqlite3');
2
- const Knex = require('knex');
3
-
4
- const knexSqlite = Knex({
5
- client: 'sqlite',
6
- connection: ':memory:',
7
- });
8
-
9
- const knexMysql = Knex({
10
- client: 'mysql2',
11
- });
12
-
13
- const knexPg = Knex({
14
- client: 'pg',
15
- });
16
-
17
- (async function run() {
18
- await knexSqlite.schema.createTable('test', (t) => {
19
- t.increments('id').primary();
20
- t.string('data');
21
- });
22
-
23
- await knexSqlite('test').insert([{ data: 'foo' }, { data: 'bar' }]);
24
-
25
- console.log('test table data:', await knexSqlite('test'));
26
-
27
- console.log(
28
- knexPg({ f: 'foo', b: 'bar' })
29
- .select('foo.*')
30
- .where('f.name', knexPg.raw('??', ['b.name']))
31
- .whereIn('something', knexPg('bar').select('id'))
32
- .toSQL().sql
33
- );
34
- })();
1
+ require('sqlite3');
2
+ const Knex = require('knex');
3
+
4
+ const knexSqlite = Knex({
5
+ client: 'sqlite',
6
+ connection: ':memory:',
7
+ });
8
+
9
+ // eslint-disable-next-line no-unused-vars
10
+ const knexMysql = Knex({
11
+ client: 'mysql2',
12
+ });
13
+
14
+ const knexPg = Knex({
15
+ client: 'pg',
16
+ });
17
+
18
+ (async function run() {
19
+ await knexSqlite.schema.createTable('test', (t) => {
20
+ t.increments('id').primary();
21
+ t.string('data');
22
+ });
23
+
24
+ await knexSqlite('test').insert([{ data: 'foo' }, { data: 'bar' }]);
25
+
26
+ console.log('test table data:', await knexSqlite('test'));
27
+
28
+ console.log(
29
+ knexPg({ f: 'foo', b: 'bar' })
30
+ .select('foo.*')
31
+ .where('f.name', knexPg.raw('??', ['b.name']))
32
+ .whereIn('something', knexPg('bar').select('id'))
33
+ .toSQL().sql
34
+ );
35
+ })();