diff --git a/_examples/a_bit_of_everything/gen.sh b/_examples/a_bit_of_everything/gen.sh index e4122993..75f9093d 100755 --- a/_examples/a_bit_of_everything/gen.sh +++ b/_examples/a_bit_of_everything/gen.sh @@ -10,7 +10,7 @@ DSNS+=( [oracle]=or://$TEST:$TEST@localhost:1521/db1 [postgres]=pg://$TEST:$TEST@localhost/$TEST [sqlite3]=sq:$TEST.db - [sqlserver]=ms://$TEST:$TEST@localhost/$TEST + [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST ) APPLY=0 diff --git a/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go b/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go index f5c11560..3ff049ed 100644 --- a/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go +++ b/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go @@ -67,7 +67,7 @@ type ABitOfEverything struct { ATime string `json:"a_time"` // a_time ATimeNullable sql.NullString `json:"a_time_nullable"` // a_time_nullable ATimestamp time.Time `json:"a_timestamp"` // a_timestamp - ATimestampNullable time.Time `json:"a_timestamp_nullable"` // a_timestamp_nullable + ATimestampNullable sql.NullTime `json:"a_timestamp_nullable"` // a_timestamp_nullable ATinyblob []byte `json:"a_tinyblob"` // a_tinyblob ATinyblobNullable []byte `json:"a_tinyblob_nullable"` // a_tinyblob_nullable ATinyint int8 `json:"a_tinyint"` // a_tinyint diff --git a/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go b/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go index 2a3d3e72..414926ca 100644 --- a/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go +++ b/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go @@ -66,7 +66,7 @@ type AViewOfEverything struct { ATime string `json:"a_time"` // a_time ATimeNullable sql.NullString `json:"a_time_nullable"` // a_time_nullable ATimestamp time.Time `json:"a_timestamp"` // a_timestamp - ATimestampNullable time.Time `json:"a_timestamp_nullable"` // a_timestamp_nullable + ATimestampNullable sql.NullTime `json:"a_timestamp_nullable"` // a_timestamp_nullable ATinyblob []byte `json:"a_tinyblob"` // a_tinyblob ATinyblobNullable []byte `json:"a_tinyblob_nullable"` // a_tinyblob_nullable ATinyint int8 `json:"a_tinyint"` // a_tinyint diff --git a/_examples/a_bit_of_everything/mysql/xo.xo.json b/_examples/a_bit_of_everything/mysql/xo.xo.json index 0fbfb3ef..e640f321 100644 --- a/_examples/a_bit_of_everything/mysql/xo.xo.json +++ b/_examples/a_bit_of_everything/mysql/xo.xo.json @@ -598,15 +598,14 @@ "name": "a_timestamp", "datatype": { "type": "timestamp" - }, - "default": "current_timestamp()" + } }, { "name": "a_timestamp_nullable", "datatype": { - "type": "timestamp" - }, - "default": "'0000-00-00 00:00:00'" + "type": "timestamp", + "nullable": true + } }, { "name": "a_tinyblob", @@ -1664,15 +1663,14 @@ "name": "a_timestamp", "datatype": { "type": "timestamp" - }, - "default": "current_timestamp()" + } }, { "name": "a_timestamp_nullable", "datatype": { - "type": "timestamp" - }, - "default": "'0000-00-00 00:00:00'" + "type": "timestamp", + "nullable": true + } }, { "name": "a_tinyblob", diff --git a/_examples/a_bit_of_everything/mysql/xo.xo.sql b/_examples/a_bit_of_everything/mysql/xo.xo.sql index c12f465f..b0b431b2 100644 --- a/_examples/a_bit_of_everything/mysql/xo.xo.sql +++ b/_examples/a_bit_of_everything/mysql/xo.xo.sql @@ -58,8 +58,8 @@ CREATE TABLE a_bit_of_everything ( a_text_nullable TEXT, a_time TIME NOT NULL, a_time_nullable TIME, - a_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - a_timestamp_nullable TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL, + a_timestamp TIMESTAMP NOT NULL, + a_timestamp_nullable TIMESTAMP, a_tinyblob TINYBLOB NOT NULL, a_tinyblob_nullable TINYBLOB, a_tinyint TINYINT(4) NOT NULL, diff --git a/_examples/a_bit_of_everything/mysql/xo.xo.yaml b/_examples/a_bit_of_everything/mysql/xo.xo.yaml index 97aabbb9..27f7fde7 100644 --- a/_examples/a_bit_of_everything/mysql/xo.xo.yaml +++ b/_examples/a_bit_of_everything/mysql/xo.xo.yaml @@ -361,11 +361,10 @@ schemas: - name: a_timestamp datatype: type: timestamp - default: current_timestamp() - name: a_timestamp_nullable datatype: type: timestamp - default: "'0000-00-00 00:00:00'" + nullable: true - name: a_tinyblob datatype: type: tinyblob @@ -983,11 +982,10 @@ schemas: - name: a_timestamp datatype: type: timestamp - default: current_timestamp() - name: a_timestamp_nullable datatype: type: timestamp - default: "'0000-00-00 00:00:00'" + nullable: true - name: a_tinyblob datatype: type: tinyblob diff --git a/_examples/booktest/gen.sh b/_examples/booktest/gen.sh index 2d185f7f..0789ab34 100755 --- a/_examples/booktest/gen.sh +++ b/_examples/booktest/gen.sh @@ -10,7 +10,7 @@ DSNS+=( [oracle]=or://$TEST:$TEST@localhost:1521/db1 [postgres]=pg://$TEST:$TEST@localhost/$TEST [sqlite3]=sq:$TEST.db - [sqlserver]=ms://$TEST:$TEST@localhost/$TEST + [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST ) APPLY=0 diff --git a/_examples/django/Pipfile.lock b/_examples/django/Pipfile.lock index fe8fb729..2c482164 100644 --- a/_examples/django/Pipfile.lock +++ b/_examples/django/Pipfile.lock @@ -18,11 +18,11 @@ "default": { "asgiref": { "hashes": [ - "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4", - "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424" + "sha256:71e68008da809b957b7ee4b43dbccff33d1b23519fb8344e33f049897077afac", + "sha256:9567dfe7bd8d3c8c892227827c41cce860b368104c3431da67a0c5a65a949506" ], "markers": "python_version >= '3.7'", - "version": "==3.5.2" + "version": "==3.6.0" }, "cx-oracle": { "hashes": [ @@ -48,11 +48,11 @@ }, "django": { "hashes": [ - "sha256:41bd65a9e5f8a89cdbfa7a7bba45cd7431ae89e750af82dea8a35fd1a7ecbe66", - "sha256:9c6d5ad36be798e562ddcaa6b17b1c3ff2d3c4f529a47432b69fb9a30f847461" + "sha256:44f714b81c5f190d9d2ddad01a532fe502fa01c4cb8faf1d081f4264ed15dcd8", + "sha256:f2f431e75adc40039ace496ad3b9f17227022e8b11566f4b363da44c7e44761e" ], "index": "pypi", - "version": "==4.0.7" + "version": "==4.1.7" }, "lock": { "hashes": [ @@ -63,11 +63,11 @@ }, "mssql-django": { "hashes": [ - "sha256:896373ae45434a337239a225dfb0d48fc9c5d71105b0c9a774bb9561165d8cfb", - "sha256:be8e6fde9bbfdb80e316bf9a4d865bce5c166891b26d239221dc7544c3e5bb6c" + "sha256:bc6ee6357df6aeabc2bcdf78dcde38417bc1c748cd1234c6bd17e315d1469e36", + "sha256:e482215743ce1032484f0972cea8601f0b6fca9f3c7d261429623b50319c446f" ], "index": "pypi", - "version": "==1.1.3" + "version": "==1.2" }, "mysqlclient": { "hashes": [ @@ -84,57 +84,74 @@ }, "psycopg2": { "hashes": [ - "sha256:06f32425949bd5fe8f625c49f17ebb9784e1e4fe928b7cce72edc36fb68e4c0c", - "sha256:0762c27d018edbcb2d34d51596e4346c983bd27c330218c56c4dc25ef7e819bf", - "sha256:083707a696e5e1c330af2508d8fab36f9700b26621ccbcb538abe22e15485362", - "sha256:34b33e0162cfcaad151f249c2649fd1030010c16f4bbc40a604c1cb77173dcf7", - "sha256:4295093a6ae3434d33ec6baab4ca5512a5082cc43c0505293087b8a46d108461", - "sha256:8cf3878353cc04b053822896bc4922b194792df9df2f1ad8da01fb3043602126", - "sha256:8e841d1bf3434da985cc5ef13e6f75c8981ced601fd70cc6bf33351b91562981", - "sha256:9572e08b50aed176ef6d66f15a21d823bb6f6d23152d35e8451d7d2d18fdac56", - "sha256:a81e3866f99382dfe8c15a151f1ca5fde5815fde879348fe5a9884a7c092a305", - "sha256:cb10d44e6694d763fa1078a26f7f6137d69f555a78ec85dc2ef716c37447e4b2", - "sha256:d3ca6421b942f60c008f81a3541e8faf6865a28d5a9b48544b0ee4f40cac7fca" + "sha256:093e3894d2d3c592ab0945d9eba9d139c139664dcf83a1c440b8a7aa9bb21955", + "sha256:190d51e8c1b25a47484e52a79638a8182451d6f6dff99f26ad9bd81e5359a0fa", + "sha256:1a5c7d7d577e0eabfcf15eb87d1e19314c8c4f0e722a301f98e0e3a65e238b4e", + "sha256:1e5a38aa85bd660c53947bd28aeaafb6a97d70423606f1ccb044a03a1203fe4a", + "sha256:322fd5fca0b1113677089d4ebd5222c964b1760e361f151cbb2706c4912112c5", + "sha256:4cb9936316d88bfab614666eb9e32995e794ed0f8f6b3b718666c22819c1d7ee", + "sha256:920bf418000dd17669d2904472efeab2b20546efd0548139618f8fa305d1d7ad", + "sha256:922cc5f0b98a5f2b1ff481f5551b95cd04580fd6f0c72d9b22e6c0145a4840e0", + "sha256:a5246d2e683a972e2187a8714b5c2cf8156c064629f9a9b1a873c1730d9e245a", + "sha256:b9ac1b0d8ecc49e05e4e182694f418d27f3aedcfca854ebd6c05bb1cffa10d6d", + "sha256:d3ef67e630b0de0779c42912fe2cbae3805ebaba30cda27fea2a3de650a9414f", + "sha256:f5b6320dbc3cf6cfb9f25308286f9f7ab464e65cfb105b64cc9c52831748ced2", + "sha256:fc04dd5189b90d825509caa510f20d1d504761e78b8dfb95a0ede180f71d50e5" ], "index": "pypi", - "version": "==2.9.3" + "version": "==2.9.5" }, "pyodbc": { "hashes": [ - "sha256:07caafd49335e444f66d7ac78a87ffd1b8ce71d352b5bf0ffaa93d9ea82b003b", - "sha256:2ad077231c6f33555abd6e482ce027739c54430b973477a42094fbae2f3d9791", - "sha256:402e94519ee95ae7ce0a792fc37fc3922f8a970337edc873b03d64427815ac8f", - "sha256:5502d98e7bb37d6407e97ecd9f6528e9512439c7c3ff6f444d8b4b59ebb5ef4b", - "sha256:5a400524ad64dcd242ea75070789696f7157e23597767340307494e4b85c5a8e", - "sha256:5e454fe5ac21d5a920e2d1f269c38e2af2d045ea97979951953f57f41ac8cea0", - "sha256:5eda44df6c064d43075ced640d955399a663523028a847132a50fc02722c4904", - "sha256:7ea7869532b96b8d529b1f08ea85765f94df7e4a58e968b2f8d455346a03e45c", - "sha256:991c1441b5067e88c37f32eb79b4015fda6b5451b396187325ec594bd4d5ae74", - "sha256:9b2bb29121971b3316faeb2593e59f6f9faebd85048b4f0716b46c6282c1b9a8", - "sha256:9d8ca2122c2671264d53f0009e4c96b80b4da9bd44394e6ef6692b3aeb34be7c", - "sha256:b80aee02983130cf0087234d226e2310b527d093402b60d307f2b90dc038ff65", - "sha256:befe795303ff13d55fa15c42496aa414cd60f465e8d96daec8c9b48bfea2c1ec", - "sha256:c8d95528d0c33fb24d0928d8cfe7dd194f7406a3da9c4a73b6fcb203b66addd4", - "sha256:e8244184fd7b92cafbdb417709a214371fe489d6fed97e61d130ceb2891f5e52", - "sha256:eb7a1a15eb35322e62bfb1c2910274106781edf4dc268ad2b0e9fc89958689e4" + "sha256:0c9fb521b376d1b804ada98c6dd12a8b349c301060bfdc194a5045882f0b2887", + "sha256:12b7a308e9e30d2da96a613ac12d46cd6f81a4791e5c5849e382e73eda1d23a2", + "sha256:27340dff78694fee6e6629500ecbfbafc7694861e22256ff00af9865442d1bfe", + "sha256:2a85203d2b6ab417f52600295294a5bb46a69fa383764959b57e8d843090fd43", + "sha256:2b92c67e8255c8636af687f56361eaa420dd5d1b7bc883e2ff473d85a5e63e08", + "sha256:389a8522806f439c430f5f339186e02b130f7b2de91c1366f44a21fb1229bb1b", + "sha256:38da788c66e9594174635ee37f494d0211fe2b5634aa2364be28317b1bbed16d", + "sha256:3bbd1819c7441766a086bf24d7803a7fd466f22dbbaffcab7acc01397961e552", + "sha256:4b3d978619e68d0a6d6bc1f7749575b6de4ac4312aab0e889a18315b1bb06e9b", + "sha256:71aa000e8ac925ccfabb2cdb9b2ec3247de243305d12bf5b24fcdd248ffd07e3", + "sha256:729b4454ede1384c4eb0608b552d59e933b377bc9f3d68a0b3d44f00c8c2ecab", + "sha256:8388c222a64fc8b0039be8e2663212e6a2915c842d5fd34f32126ee392b6c48e", + "sha256:92b9af48e8b928455bc8b94bf3da05751faec0932a11eee237c189c6d439e5c8", + "sha256:95c1e3f2747af0957de17192811f06525a8e9c3e6491b4698b3f34d626333be7", + "sha256:9632c19850bdeeb7ce2e9e38cf64df1688cd803e810bf18ab92fb0588956f7be", + "sha256:9918c50936e80cac300c9423c5936a2573543e2476749155616ef50685891145", + "sha256:b6f1d113d382fed53fd2f5692266c83409ecbdc6144a7e1abbed76050e9e5973", + "sha256:baf1d62959de66a664b4d63c4af00d09f107981be7a8961ce235a0fce386663b", + "sha256:c24115c491585018faf88b1cafc73a91e177ff57c7d82d04abebe7fb52cae6b3", + "sha256:c3ab48723c647bfd38dfa60dde3c1967e4e0e92a11c93ae30ec6665765e5a0f7", + "sha256:c7f8e34b18474bc347bd3623408c8ecb405cf2fa71cb72e42b9657f4ffbc146a", + "sha256:cd885f28ba39debb1c8ace95a1fed551835a5a399778350094c71d0007e42a75", + "sha256:cfe3c59fb151daef483533ab94b6b7367fa643137f94dac0a189e9779d691755", + "sha256:d94dd82d8ded92d3f7ed7d575dc53127e1bcc2bb7ada0ccac51eb4520cffc780", + "sha256:dda0b6f9728941523e5b84b6a12bdcff420596451d2cfefcd7f21ace3bfde334", + "sha256:df74d692e3002208ef16994adcd0ba0a5f579ec8621a2aa2866195defcecfdb1", + "sha256:e9a69b16fc59b74a9153c06e452a8093eae4a6ea542462811f517e7ccc5ff3e8", + "sha256:ea33e115ea6b3f5113a647c4a121247d32d8f338c3d9e1937b50222e52ad4360", + "sha256:f068590bcce50b0120e88ec4f90d65f660e8d39052fad3733a40614623a987e4", + "sha256:f964f5f153569dae60b149b35aa7d54b46fb38c6bf928c346d928771b0a5f590", + "sha256:fe0448f3d39253ed55d1b2b4bfa22f04413e8d0b09202a81d74e4cbe54de34a4" ], "index": "pypi", - "version": "==4.0.34" + "version": "==4.0.35" }, "pytz": { "hashes": [ - "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197", - "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5" + "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588", + "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" ], - "version": "==2022.2.1" + "version": "==2023.3" }, "sqlparse": { "hashes": [ - "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", - "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" + "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34", + "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268" ], "markers": "python_version >= '3.5'", - "version": "==0.4.2" + "version": "==0.4.3" } }, "develop": {} diff --git a/_examples/django/gen.sh b/_examples/django/gen.sh index 3e36bd73..17866911 100755 --- a/_examples/django/gen.sh +++ b/_examples/django/gen.sh @@ -10,7 +10,7 @@ DSNS+=( [oracle]=or://$TEST:$TEST@localhost/db1 [postgres]=pg://$TEST:$TEST@localhost/$TEST [sqlite3]=sq:$TEST.db - [sqlserver]=ms://$TEST:$TEST@localhost/$TEST + [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST ) APPLY=0 diff --git a/_examples/django/init.sh b/_examples/django/init.sh index 177035f0..e8f9858b 100755 --- a/_examples/django/init.sh +++ b/_examples/django/init.sh @@ -62,7 +62,7 @@ case $TYPE in [user]=django [pass]=django [name]=django - [options]="'OPTIONS': {'driver': 'ODBC Driver 18 for SQL Server'}," + [options]="'OPTIONS': {'driver': 'ODBC Driver 18 for SQL Server', 'extra_params': 'Encrypt=no'}," ) ;; esac diff --git a/_examples/django/sqlite3/djangoadminlog.xo.go b/_examples/django/sqlite3/djangoadminlog.xo.go index 787b71d0..b1d82b07 100644 --- a/_examples/django/sqlite3/djangoadminlog.xo.go +++ b/_examples/django/sqlite3/djangoadminlog.xo.go @@ -10,13 +10,13 @@ import ( // DjangoAdminLog represents a row from 'django_admin_log'. type DjangoAdminLog struct { ID int `json:"id"` // id - ActionTime Time `json:"action_time"` // action_time ObjectID sql.NullString `json:"object_id"` // object_id ObjectRepr string `json:"object_repr"` // object_repr + ActionFlag uint `json:"action_flag"` // action_flag ChangeMessage string `json:"change_message"` // change_message ContentTypeID sql.NullInt64 `json:"content_type_id"` // content_type_id UserID int `json:"user_id"` // user_id - ActionFlag uint `json:"action_flag"` // action_flag + ActionTime Time `json:"action_time"` // action_time // xo fields _exists, _deleted bool } @@ -42,13 +42,13 @@ func (dal *DjangoAdminLog) Insert(ctx context.Context, db DB) error { } // insert (primary key generated and returned by database) const sqlstr = `INSERT INTO django_admin_log (` + - `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag` + + `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time` + `) VALUES (` + `$1, $2, $3, $4, $5, $6, $7, $8` + `)` // run - logf(sqlstr, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag) - res, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag) + logf(sqlstr, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime) + res, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime) if err != nil { return logerror(err) } @@ -73,11 +73,11 @@ func (dal *DjangoAdminLog) Update(ctx context.Context, db DB) error { } // update with primary key const sqlstr = `UPDATE django_admin_log SET ` + - `action_time = $1, object_id = $2, object_repr = $3, change_message = $4, content_type_id = $5, user_id = $6, action_flag = $7 ` + + `object_id = $1, object_repr = $2, action_flag = $3, change_message = $4, content_type_id = $5, user_id = $6, action_time = $7 ` + `WHERE id = $8` // run - logf(sqlstr, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag, dal.ID) - if _, err := db.ExecContext(ctx, sqlstr, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag, dal.ID); err != nil { + logf(sqlstr, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime, dal.ID) + if _, err := db.ExecContext(ctx, sqlstr, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime, dal.ID); err != nil { return logerror(err) } return nil @@ -99,16 +99,16 @@ func (dal *DjangoAdminLog) Upsert(ctx context.Context, db DB) error { } // upsert const sqlstr = `INSERT INTO django_admin_log (` + - `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag` + + `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time` + `) VALUES (` + `$1, $2, $3, $4, $5, $6, $7, $8` + `)` + ` ON CONFLICT (id) DO ` + `UPDATE SET ` + - `action_time = EXCLUDED.action_time, object_id = EXCLUDED.object_id, object_repr = EXCLUDED.object_repr, change_message = EXCLUDED.change_message, content_type_id = EXCLUDED.content_type_id, user_id = EXCLUDED.user_id, action_flag = EXCLUDED.action_flag ` + `object_id = EXCLUDED.object_id, object_repr = EXCLUDED.object_repr, action_flag = EXCLUDED.action_flag, change_message = EXCLUDED.change_message, content_type_id = EXCLUDED.content_type_id, user_id = EXCLUDED.user_id, action_time = EXCLUDED.action_time ` // run - logf(sqlstr, dal.ID, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag) - if _, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag); err != nil { + logf(sqlstr, dal.ID, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime) + if _, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime); err != nil { return logerror(err) } // set exists @@ -143,7 +143,7 @@ func (dal *DjangoAdminLog) Delete(ctx context.Context, db DB) error { func DjangoAdminLogByContentTypeID(ctx context.Context, db DB, contentTypeID sql.NullInt64) ([]*DjangoAdminLog, error) { // query const sqlstr = `SELECT ` + - `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag ` + + `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time ` + `FROM django_admin_log ` + `WHERE content_type_id = $1` // run @@ -160,7 +160,7 @@ func DjangoAdminLogByContentTypeID(ctx context.Context, db DB, contentTypeID sql _exists: true, } // scan - if err := rows.Scan(&dal.ID, &dal.ActionTime, &dal.ObjectID, &dal.ObjectRepr, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionFlag); err != nil { + if err := rows.Scan(&dal.ID, &dal.ObjectID, &dal.ObjectRepr, &dal.ActionFlag, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionTime); err != nil { return nil, logerror(err) } res = append(res, &dal) @@ -177,7 +177,7 @@ func DjangoAdminLogByContentTypeID(ctx context.Context, db DB, contentTypeID sql func DjangoAdminLogByID(ctx context.Context, db DB, id int) (*DjangoAdminLog, error) { // query const sqlstr = `SELECT ` + - `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag ` + + `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time ` + `FROM django_admin_log ` + `WHERE id = $1` // run @@ -185,7 +185,7 @@ func DjangoAdminLogByID(ctx context.Context, db DB, id int) (*DjangoAdminLog, er dal := DjangoAdminLog{ _exists: true, } - if err := db.QueryRowContext(ctx, sqlstr, id).Scan(&dal.ID, &dal.ActionTime, &dal.ObjectID, &dal.ObjectRepr, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionFlag); err != nil { + if err := db.QueryRowContext(ctx, sqlstr, id).Scan(&dal.ID, &dal.ObjectID, &dal.ObjectRepr, &dal.ActionFlag, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionTime); err != nil { return nil, logerror(err) } return &dal, nil @@ -197,7 +197,7 @@ func DjangoAdminLogByID(ctx context.Context, db DB, id int) (*DjangoAdminLog, er func DjangoAdminLogByUserID(ctx context.Context, db DB, userID int) ([]*DjangoAdminLog, error) { // query const sqlstr = `SELECT ` + - `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag ` + + `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time ` + `FROM django_admin_log ` + `WHERE user_id = $1` // run @@ -214,7 +214,7 @@ func DjangoAdminLogByUserID(ctx context.Context, db DB, userID int) ([]*DjangoAd _exists: true, } // scan - if err := rows.Scan(&dal.ID, &dal.ActionTime, &dal.ObjectID, &dal.ObjectRepr, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionFlag); err != nil { + if err := rows.Scan(&dal.ID, &dal.ObjectID, &dal.ObjectRepr, &dal.ActionFlag, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionTime); err != nil { return nil, logerror(err) } res = append(res, &dal) diff --git a/_examples/django/sqlite3/xo.xo.dot b/_examples/django/sqlite3/xo.xo.dot index 7809ae7d..79c84470 100644 --- a/_examples/django/sqlite3/xo.xo.dot +++ b/_examples/django/sqlite3/xo.xo.dot @@ -88,13 +88,13 @@ digraph django_db { - + - +
"django_admin_log"
id: integer
action_time: datetime
object_id: text
object_repr: varchar
action_flag: smallint
change_message: text
content_type_id: integer
user_id: integer
action_flag: smallint
action_time: datetime
> ] "django_content_type" [ label=< diff --git a/_examples/django/sqlite3/xo.xo.json b/_examples/django/sqlite3/xo.xo.json index ac182c30..eda5623c 100644 --- a/_examples/django/sqlite3/xo.xo.json +++ b/_examples/django/sqlite3/xo.xo.json @@ -991,12 +991,6 @@ }, "is_primary": true }, - { - "name": "action_time", - "datatype": { - "type": "datetime" - } - }, { "name": "object_id", "datatype": { @@ -1011,6 +1005,13 @@ "prec": 200 } }, + { + "name": "action_flag", + "datatype": { + "type": "smallint", + "unsigned": true + } + }, { "name": "change_message", "datatype": { @@ -1031,10 +1032,9 @@ } }, { - "name": "action_flag", + "name": "action_time", "datatype": { - "type": "smallint", - "unsigned": true + "type": "datetime" } } ], diff --git a/_examples/django/sqlite3/xo.xo.sql b/_examples/django/sqlite3/xo.xo.sql index 72740b8a..b0f79f81 100644 --- a/_examples/django/sqlite3/xo.xo.sql +++ b/_examples/django/sqlite3/xo.xo.sql @@ -139,13 +139,13 @@ CREATE INDEX books_tags_tag_id_8d70b40a ON books_tags (tag_id); -- table django_admin_log CREATE TABLE django_admin_log ( id INTEGER NOT NULL, - action_time DATETIME NOT NULL, object_id TEXT, object_repr VARCHAR(200) NOT NULL, + action_flag SMALLINT UNSIGNED NOT NULL, change_message TEXT NOT NULL, content_type_id INTEGER REFERENCES django_content_type (id), user_id INTEGER NOT NULL REFERENCES auth_user (id), - action_flag SMALLINT UNSIGNED NOT NULL, + action_time DATETIME NOT NULL, PRIMARY KEY (id) ); diff --git a/_examples/django/sqlite3/xo.xo.yaml b/_examples/django/sqlite3/xo.xo.yaml index 1c4aaf26..307bf192 100644 --- a/_examples/django/sqlite3/xo.xo.yaml +++ b/_examples/django/sqlite3/xo.xo.yaml @@ -524,9 +524,6 @@ schemas: datatype: type: integer is_primary: true - - name: action_time - datatype: - type: datetime - name: object_id datatype: type: text @@ -535,6 +532,10 @@ schemas: datatype: type: varchar prec: 200 + - name: action_flag + datatype: + type: smallint + unsigned: true - name: change_message datatype: type: text @@ -545,10 +546,9 @@ schemas: - name: user_id datatype: type: integer - - name: action_flag + - name: action_time datatype: - type: smallint - unsigned: true + type: datetime primary_keys: - name: id datatype: diff --git a/_examples/django/sqlserver/db.xo.go b/_examples/django/sqlserver/db.xo.go index 5203b1fa..63e0f4e7 100644 --- a/_examples/django/sqlserver/db.xo.go +++ b/_examples/django/sqlserver/db.xo.go @@ -29,10 +29,9 @@ func Logf(s string, v ...interface{}) { // SetLogger sets the package logger. Valid logger types: // -// io.Writer -// func(string, ...interface{}) (int, error) // fmt.Printf -// func(string, ...interface{}) // log.Printf -// +// io.Writer +// func(string, ...interface{}) (int, error) // fmt.Printf +// func(string, ...interface{}) // log.Printf func SetLogger(logger interface{}) { logf = convLogger(logger) } @@ -44,10 +43,9 @@ func Errorf(s string, v ...interface{}) { // SetErrorLogger sets the package error logger. Valid logger types: // -// io.Writer -// func(string, ...interface{}) (int, error) // fmt.Printf -// func(string, ...interface{}) // log.Printf -// +// io.Writer +// func(string, ...interface{}) (int, error) // fmt.Printf +// func(string, ...interface{}) // log.Printf func SetErrorLogger(logger interface{}) { errf = convLogger(logger) } diff --git a/_examples/django/sqlserver/xo.xo.dot b/_examples/django/sqlserver/xo.xo.dot index 4976747f..0d449069 100644 --- a/_examples/django/sqlserver/xo.xo.dot +++ b/_examples/django/sqlserver/xo.xo.dot @@ -30,7 +30,7 @@ digraph django { "django.auth_user" id: int password: nvarchar - last_login: datetime2 + last_login: datetimeoffset is_superuser: bit username: nvarchar first_name: nvarchar @@ -38,7 +38,7 @@ digraph django { email: nvarchar is_staff: bit is_active: bit - date_joined: datetime2 + date_joined: datetimeoffset > ] "django.auth_user_groups" [ label=< @@ -72,7 +72,7 @@ digraph django { book_type: int title: nvarchar year: int - available: datetime2 + available: datetimeoffset books_author_id_fkey: bigint > ] @@ -88,7 +88,7 @@ digraph django { - + @@ -111,7 +111,7 @@ digraph django { - +
"django.django_admin_log"
id: int
action_time: datetime2
action_time: datetimeoffset
object_id: nvarchar
object_repr: nvarchar
action_flag: smallint
id: bigint
app: nvarchar
name: nvarchar
applied: datetime2
applied: datetimeoffset
> ] "django.django_session" [ label=< @@ -119,7 +119,7 @@ digraph django { "django.django_session" session_key: nvarchar session_data: nvarchar - expire_date: datetime2 + expire_date: datetimeoffset > ] "django.tags" [ label=< diff --git a/_examples/django/sqlserver/xo.xo.json b/_examples/django/sqlserver/xo.xo.json index f0440aac..9dc55abd 100644 --- a/_examples/django/sqlserver/xo.xo.json +++ b/_examples/django/sqlserver/xo.xo.json @@ -366,8 +366,8 @@ { "name": "last_login", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7, "nullable": true } @@ -424,8 +424,8 @@ { "name": "date_joined", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7 } } @@ -871,8 +871,8 @@ { "name": "available", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7 } }, @@ -1120,8 +1120,8 @@ { "name": "action_time", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7 } }, @@ -1382,8 +1382,8 @@ { "name": "applied", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7 } } @@ -1439,8 +1439,8 @@ { "name": "expire_date", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7 } } @@ -1462,8 +1462,8 @@ { "name": "expire_date", "datatype": { - "type": "datetime2", - "prec": 27, + "type": "datetimeoffset", + "prec": 34, "scale": 7 } } diff --git a/_examples/django/sqlserver/xo.xo.sql b/_examples/django/sqlserver/xo.xo.sql index b9e8c471..464ed940 100644 --- a/_examples/django/sqlserver/xo.xo.sql +++ b/_examples/django/sqlserver/xo.xo.sql @@ -49,7 +49,7 @@ CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON auth_group_permiss CREATE TABLE auth_user ( id INT IDENTITY(1, 1), password NVARCHAR(128) NOT NULL, - last_login DATETIME2, + last_login DATETIMEOFFSET, is_superuser BIT NOT NULL, username NVARCHAR(150) NOT NULL, first_name NVARCHAR(150) NOT NULL, @@ -57,7 +57,7 @@ CREATE TABLE auth_user ( email NVARCHAR(254) NOT NULL, is_staff BIT NOT NULL, is_active BIT NOT NULL, - date_joined DATETIME2 NOT NULL, + date_joined DATETIMEOFFSET NOT NULL, CONSTRAINT auth_user_id_pkey PRIMARY KEY (id), CONSTRAINT auth_user_username_6821ab7c_uniq UNIQUE (username) ); @@ -106,7 +106,7 @@ CREATE TABLE books ( book_type INT NOT NULL, title NVARCHAR(255) NOT NULL, year INT NOT NULL, - available DATETIME2 NOT NULL, + available DATETIMEOFFSET NOT NULL, books_author_id_fkey BIGINT NOT NULL CONSTRAINT books_books_author_id_fkey_73ac0c26_fk_authors_author_id REFERENCES authors (author_id), CONSTRAINT books_book_id_pkey PRIMARY KEY (book_id) ); @@ -139,7 +139,7 @@ CREATE INDEX books_tags_tag_id_8d70b40a ON books_tags (tag_id); -- table django_admin_log CREATE TABLE django_admin_log ( id INT IDENTITY(1, 1), - action_time DATETIME2 NOT NULL, + action_time DATETIMEOFFSET NOT NULL, object_id NVARCHAR, object_repr NVARCHAR(200) NOT NULL, action_flag SMALLINT NOT NULL, @@ -160,7 +160,7 @@ CREATE TABLE django_migrations ( id BIGINT IDENTITY(1, 1), app NVARCHAR(255) NOT NULL, name NVARCHAR(255) NOT NULL, - applied DATETIME2 NOT NULL, + applied DATETIMEOFFSET NOT NULL, CONSTRAINT django_migrations_id_pkey PRIMARY KEY (id) ); @@ -168,7 +168,7 @@ CREATE TABLE django_migrations ( CREATE TABLE django_session ( session_key NVARCHAR(40) NOT NULL, session_data NVARCHAR NOT NULL, - expire_date DATETIME2 NOT NULL, + expire_date DATETIMEOFFSET NOT NULL, CONSTRAINT django_session_session_key_pkey PRIMARY KEY (session_key) ); diff --git a/_examples/django/sqlserver/xo.xo.yaml b/_examples/django/sqlserver/xo.xo.yaml index 63a31971..a0a7720f 100644 --- a/_examples/django/sqlserver/xo.xo.yaml +++ b/_examples/django/sqlserver/xo.xo.yaml @@ -215,8 +215,8 @@ schemas: prec: 128 - name: last_login datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 nullable: true - name: is_superuser @@ -249,8 +249,8 @@ schemas: prec: 1 - name: date_joined datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 primary_keys: - name: id @@ -508,8 +508,8 @@ schemas: prec: 10 - name: available datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 - name: books_author_id_fkey datatype: @@ -652,8 +652,8 @@ schemas: is_sequence: true - name: action_time datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 - name: object_id datatype: @@ -805,8 +805,8 @@ schemas: prec: 255 - name: applied datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 primary_keys: - name: id @@ -839,8 +839,8 @@ schemas: type: nvarchar - name: expire_date datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 primary_keys: - name: session_key @@ -853,8 +853,8 @@ schemas: fields: - name: expire_date datatype: - type: datetime2 - prec: 27 + type: datetimeoffset + prec: 34 scale: 7 - name: django_session_session_key_pkey fields: diff --git a/_examples/init/sqlserver.sql b/_examples/init/sqlserver.sql index 3a0e13e5..5aa19050 100644 --- a/_examples/init/sqlserver.sql +++ b/_examples/init/sqlserver.sql @@ -10,7 +10,7 @@ DROP DATABASE :NAME; CREATE DATABASE :NAME CONTAINMENT=PARTIAL; -\connect 'ms://localhost/':NAME +\connect 'ms://localhost/?database=':NAME CREATE LOGIN :NAME WITH diff --git a/_examples/northwind/gen.sh b/_examples/northwind/gen.sh index ee531922..4d69a2a2 100755 --- a/_examples/northwind/gen.sh +++ b/_examples/northwind/gen.sh @@ -10,7 +10,7 @@ DSNS+=( [oracle]=or://$TEST:$TEST@localhost:1521/db1 [postgres]=pg://$TEST:$TEST@localhost/$TEST [sqlite3]=sq:$TEST.db - [sqlserver]=ms://$TEST:$TEST@localhost/$TEST + [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST ) APPLY=0 diff --git a/go.mod b/go.mod index f7fadee4..bec0f6e3 100644 --- a/go.mod +++ b/go.mod @@ -6,41 +6,41 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 github.com/go-sql-driver/mysql v1.7.0 github.com/gobwas/glob v0.2.3 - github.com/goccy/go-yaml v1.9.8 + github.com/goccy/go-yaml v1.10.1 github.com/kenshaw/inflector v0.2.0 github.com/kenshaw/snaker v0.2.0 github.com/lib/pq v1.10.7 github.com/mattn/go-sqlite3 v1.14.16 - github.com/microsoft/go-mssqldb v0.19.0 - github.com/sijms/go-ora/v2 v2.5.22 + github.com/microsoft/go-mssqldb v0.21.0 + github.com/sijms/go-ora/v2 v2.6.10 github.com/spf13/cobra v1.6.1 - github.com/traefik/yaegi v0.14.3 + github.com/traefik/yaegi v0.15.1 github.com/xo/dburl v0.13.0 github.com/yookoala/realpath v1.0.0 - golang.org/x/tools v0.5.0 + golang.org/x/tools v0.7.0 mvdan.cc/gofumpt v0.4.0 ) require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect - github.com/fatih/color v1.13.0 // indirect + github.com/fatih/color v1.15.0 // indirect github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/uuid v1.3.0 // indirect github.com/huandu/xstrings v1.4.0 // indirect - github.com/imdario/mergo v0.3.13 // indirect + github.com/imdario/mergo v0.3.15 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/mod v0.7.0 // indirect - golang.org/x/sys v0.4.0 // indirect + golang.org/x/crypto v0.7.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/sys v0.6.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect ) diff --git a/go.sum b/go.sum index 191e270d..0e376af1 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,10 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM= github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= @@ -18,6 +20,8 @@ github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5O github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= @@ -32,9 +36,12 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-yaml v1.9.8 h1:5gMyLUeU1/6zl+WFfR1hN7D2kf+1/eRGa7DFtToiBvQ= github.com/goccy/go-yaml v1.9.8/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE= +github.com/goccy/go-yaml v1.10.1 h1:neijiyxgQOmEyVw8ZsDxcCzkU3NJ5NS+q7xmnOcd8UQ= +github.com/goccy/go-yaml v1.10.1/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= @@ -54,6 +61,8 @@ github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= @@ -83,10 +92,14 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/microsoft/go-mssqldb v0.19.0 h1:LMRSgLcNMF8paPX14xlyQBmBH+jnFylPsYpVZf86eHM= github.com/microsoft/go-mssqldb v0.19.0/go.mod h1:ukJCBnnzLzpVF0qYRT+eg1e+eSwjeQ7IvenUv8QPook= +github.com/microsoft/go-mssqldb v0.21.0 h1:p2rpHIL7TlSv1QrbXJUAcbyRKnIT0C9rRkH2E4OjLn8= +github.com/microsoft/go-mssqldb v0.21.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= @@ -106,6 +119,8 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sijms/go-ora/v2 v2.5.22 h1:TH5AOdzPHGxBosz0LOGKTGaUVa4N+hh3u47DjmgWn3Q= github.com/sijms/go-ora/v2 v2.5.22/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= +github.com/sijms/go-ora/v2 v2.6.10 h1:15n+6SJ/LqxBPuiiq8WZ+TVVftE3hQNPrNcOMyz2NSU= +github.com/sijms/go-ora/v2 v2.6.10/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= @@ -122,6 +137,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/traefik/yaegi v0.14.3 h1:LqA0k8DKwvRMc+msfQjNusphHJc+r6WC5tZU5TmUFOM= github.com/traefik/yaegi v0.14.3/go.mod h1:AVRxhaI2G+nUsaM1zyktzwXn69G3t/AuTDrCiTds9p0= +github.com/traefik/yaegi v0.15.1 h1:YA5SbaL6HZA0Exh9T/oArRHqGN2HQ+zgmCY7dkoTXu4= +github.com/traefik/yaegi v0.15.1/go.mod h1:AVRxhaI2G+nUsaM1zyktzwXn69G3t/AuTDrCiTds9p0= github.com/xo/dburl v0.13.0 h1:kq+oD1j/m8DnJ/p6G/LQXRosVchs8q5/AszEUKkvYfo= github.com/xo/dburl v0.13.0/go.mod h1:K6rSPgbVqP3ZFT0RHkdg/M3M5KhLeV2MaS/ZqaLd1kA= github.com/yookoala/realpath v1.0.0 h1:7OA9pj4FZd+oZDsyvXWQvjn5oBdcHRTV44PpdMSuImQ= @@ -136,9 +153,13 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -170,6 +191,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -184,6 +207,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=