happy-sql 2.1.1 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ChangeLog +71 -0
- package/lib/parser/visitors/clause/alter-table/alter-table.js +40 -0
- package/lib/parser/visitors/clause/attach/attach.js +12 -0
- package/lib/parser/visitors/clause/binary.js +158 -0
- package/lib/parser/visitors/clause/case-when/case-when.js +24 -0
- package/lib/parser/visitors/clause/column-definition/column-definition.js +57 -8
- package/lib/parser/visitors/clause/create-index/create-index.js +29 -0
- package/lib/parser/visitors/clause/create-table/create-table.js +8 -4
- package/lib/parser/visitors/clause/delete/delete.js +3 -0
- package/lib/parser/visitors/clause/drop-index/drop-index.js +12 -0
- package/lib/parser/visitors/clause/drop-table/drop-table.js +18 -0
- package/lib/parser/visitors/clause/from/from.js +112 -75
- package/lib/parser/visitors/clause/index.js +28 -2
- package/lib/parser/visitors/clause/insert/insert.js +25 -18
- package/lib/parser/visitors/clause/operand.js +51 -1
- package/lib/parser/visitors/clause/pragma/pragma.js +12 -0
- package/lib/parser/visitors/clause/returning.js +32 -0
- package/lib/parser/visitors/clause/select/select.js +92 -18
- package/lib/parser/visitors/clause/transaction/transaction.js +20 -0
- package/lib/parser/visitors/clause/union/union.js +19 -2
- package/lib/parser/visitors/clause/update/update.js +9 -0
- package/lib/parser/visitors/clause/where/where.js +31 -73
- package/lib/printer/visitors/array-expression.js +8 -1
- package/lib/printer/visitors/boolean-literal.js +8 -0
- package/lib/printer/visitors/call-expression/call-expression.js +18 -1
- package/lib/printer/visitors/call-expression/clauses/add-column/add-column.js +4 -0
- package/lib/printer/visitors/call-expression/clauses/all/all.js +10 -0
- package/lib/printer/visitors/call-expression/clauses/alter-column-type/alter-column-type.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/alter-table/alter-table.js +12 -0
- package/lib/printer/visitors/call-expression/clauses/any/any.js +10 -0
- package/lib/printer/visitors/call-expression/clauses/array/array.js +14 -0
- package/lib/printer/visitors/call-expression/clauses/attach/attach.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/begin/begin.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/case-when/case-when.js +33 -0
- package/lib/printer/visitors/call-expression/clauses/cast/cast.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/check/check.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/clauses.js +114 -0
- package/lib/printer/visitors/call-expression/clauses/commit/commit.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/concat/concat.js +7 -0
- package/lib/printer/visitors/call-expression/clauses/create-index/create-index.js +20 -0
- package/lib/printer/visitors/call-expression/clauses/create-index/create-unique-index.js +20 -0
- package/lib/printer/visitors/call-expression/clauses/create-table/create-table.js +6 -2
- package/lib/printer/visitors/call-expression/clauses/create-table-if-not-exists/create-table-if-not-exists.js +6 -0
- package/lib/printer/visitors/call-expression/clauses/cross-join/cross-join.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/default/default.js +6 -0
- package/lib/printer/visitors/call-expression/clauses/delete/delete.js +3 -5
- package/lib/printer/visitors/call-expression/clauses/drop-column/drop-column.js +4 -0
- package/lib/printer/visitors/call-expression/clauses/drop-index/drop-index.js +12 -0
- package/lib/printer/visitors/call-expression/clauses/drop-table/drop-table.js +25 -0
- package/lib/printer/visitors/call-expression/clauses/exists/exists.js +5 -0
- package/lib/printer/visitors/call-expression/clauses/extract/extract.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/from/from.js +11 -2
- package/lib/printer/visitors/call-expression/clauses/full-outer-join/full-outer-join.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/ilike/ilike.js +7 -0
- package/lib/printer/visitors/call-expression/clauses/in-query/in-query.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/inner-join/inner-join.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/insert/insert.js +17 -4
- package/lib/printer/visitors/call-expression/clauses/into/into.js +1 -1
- package/lib/printer/visitors/call-expression/clauses/is-distinct-from/is-distinct-from.js +7 -0
- package/lib/printer/visitors/call-expression/clauses/join/join.js +11 -8
- package/lib/printer/visitors/call-expression/clauses/json-op.js +21 -0
- package/lib/printer/visitors/call-expression/clauses/lateral-join/lateral-join.js +19 -0
- package/lib/printer/visitors/call-expression/clauses/lateral-subquery/lateral-subquery.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/left-join/left-join.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/left-outer-join/left-outer-join.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/natural-join/natural-join.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/not-between/not-between.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/not-exists/not-exists.js +5 -0
- package/lib/printer/visitors/call-expression/clauses/not-like/not-like.js +7 -0
- package/lib/printer/visitors/call-expression/clauses/not-null/not-null.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/or-ignore/or-ignore.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/or-replace/or-replace.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/over/over.js +17 -0
- package/lib/printer/visitors/call-expression/clauses/partition-by/partition-by.js +12 -0
- package/lib/printer/visitors/call-expression/clauses/pg-cast/pg-cast.js +7 -0
- package/lib/printer/visitors/call-expression/clauses/pragma/pragma.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/references/references.js +17 -0
- package/lib/printer/visitors/call-expression/clauses/rename-column/rename-column.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/right-join/right-join.js +8 -0
- package/lib/printer/visitors/call-expression/clauses/rollback/rollback.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/rollback-to/rollback-to.js +4 -0
- package/lib/printer/visitors/call-expression/clauses/row/row.js +14 -0
- package/lib/printer/visitors/call-expression/clauses/row-number/row-number.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/savepoint/savepoint.js +4 -0
- package/lib/printer/visitors/call-expression/clauses/select/select.js +30 -10
- package/lib/printer/visitors/call-expression/clauses/similar-to/similar-to.js +7 -0
- package/lib/printer/visitors/call-expression/clauses/subquery/subquery.js +5 -0
- package/lib/printer/visitors/call-expression/clauses/union/union.js +9 -0
- package/lib/printer/visitors/call-expression/clauses/unique/unique.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/update/update.js +2 -3
- package/lib/printer/visitors/call-expression/clauses/update-from/update-from.js +4 -0
- package/lib/printer/visitors/call-expression/clauses/vacuum/vacuum.js +3 -0
- package/lib/printer/visitors/call-expression/clauses/values/values.js +21 -3
- package/lib/printer/visitors/call-expression/clauses/where/where.js +10 -0
- package/lib/printer/visitors/index.js +5 -1
- package/lib/printer/visitors/logical-expression.js +37 -4
- package/lib/printer/visitors/null-literal.js +3 -0
- package/package.json +11 -1
- package/lib/parser/fixture/comment-fix.js +0 -8
- package/lib/parser/fixture/comment.sql +0 -2
- package/lib/parser/fixture/section-multi-fix.js +0 -24
- package/lib/parser/fixture/section-multi.sql +0 -3
- package/lib/parser/fixture/select-fix.js +0 -8
- package/lib/parser/fixture/select.sql +0 -1
- package/lib/parser/fixture/with-named-fix.js +0 -43
- package/lib/parser/fixture/with-named-insert-fix.js +0 -44
- package/lib/parser/fixture/with-named-insert.sql +0 -13
- package/lib/parser/fixture/with-named.sql +0 -8
- package/lib/parser/visitors/clause/count/fixture/count-fix.js +0 -10
- package/lib/parser/visitors/clause/count/fixture/count-one-fix.js +0 -10
- package/lib/parser/visitors/clause/count/fixture/count-one.sql +0 -1
- package/lib/parser/visitors/clause/count/fixture/count.sql +0 -1
- package/lib/parser/visitors/clause/create-sequence/fixture/create-sequence-fix.js +0 -5
- package/lib/parser/visitors/clause/create-sequence/fixture/create-sequence.sql +0 -2
- package/lib/parser/visitors/clause/create-table/fixture/create-table-autoincrement-fix.js +0 -12
- package/lib/parser/visitors/clause/create-table/fixture/create-table-autoincrement.sql +0 -1
- package/lib/parser/visitors/clause/create-table/fixture/create-table-default-fix.js +0 -11
- package/lib/parser/visitors/clause/create-table/fixture/create-table-default.sql +0 -1
- package/lib/parser/visitors/clause/create-table/fixture/create-table-identity-always-fix.js +0 -12
- package/lib/parser/visitors/clause/create-table/fixture/create-table-identity-always.sql +0 -1
- package/lib/parser/visitors/clause/create-table/fixture/create-table-identity-by-default-fix.js +0 -12
- package/lib/parser/visitors/clause/create-table/fixture/create-table-identity-by-default.sql +0 -1
- package/lib/parser/visitors/clause/create-table/fixture/create-table-nextval-fix.js +0 -18
- package/lib/parser/visitors/clause/create-table/fixture/create-table-nextval.sql +0 -1
- package/lib/parser/visitors/clause/create-table/fixture/create-table-not-null-fix.js +0 -11
- package/lib/parser/visitors/clause/create-table/fixture/create-table-not-null.sql +0 -1
- package/lib/parser/visitors/clause/create-table/fixture/create-table-serial-fix.js +0 -11
- package/lib/parser/visitors/clause/create-table/fixture/create-table-serial.sql +0 -1
- package/lib/parser/visitors/clause/delete/fixture/delete-fix.js +0 -10
- package/lib/parser/visitors/clause/delete/fixture/delete-where-between-fix.js +0 -14
- package/lib/parser/visitors/clause/delete/fixture/delete-where-between.sql +0 -1
- package/lib/parser/visitors/clause/delete/fixture/delete.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/from-fix.js +0 -8
- package/lib/parser/visitors/clause/from/fixture/from-where-fix.js +0 -12
- package/lib/parser/visitors/clause/from/fixture/from-where.sql +0 -3
- package/lib/parser/visitors/clause/from/fixture/from.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/generate-series-fix.js +0 -12
- package/lib/parser/visitors/clause/from/fixture/generate-series.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/group-by-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/group-by-having-fix.js +0 -22
- package/lib/parser/visitors/clause/from/fixture/group-by-having.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/group-by-multi-fix.js +0 -13
- package/lib/parser/visitors/clause/from/fixture/group-by-multi.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/group-by-order-by-fix.js +0 -17
- package/lib/parser/visitors/clause/from/fixture/group-by-order-by.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/group-by-sum-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/group-by-sum-having-fix.js +0 -19
- package/lib/parser/visitors/clause/from/fixture/group-by-sum-having.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/group-by-sum.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/group-by.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/join-multi-fix.js +0 -21
- package/lib/parser/visitors/clause/from/fixture/join-multi.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-in-fix.js +0 -19
- package/lib/parser/visitors/clause/from/fixture/join-on-in.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-is-not-null-fix.js +0 -16
- package/lib/parser/visitors/clause/from/fixture/join-on-is-not-null.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-is-null-fix.js +0 -16
- package/lib/parser/visitors/clause/from/fixture/join-on-is-null.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-like-fix.js +0 -17
- package/lib/parser/visitors/clause/from/fixture/join-on-like.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-not-eq-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/join-on-not-eq.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-number-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/join-on-number.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-or-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/join-on-or.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join-on-param-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/join-on-param.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/join.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/json-each-fix.js +0 -10
- package/lib/parser/visitors/clause/from/fixture/json-each.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/limit-fix.js +0 -11
- package/lib/parser/visitors/clause/from/fixture/limit-offset-fix.js +0 -12
- package/lib/parser/visitors/clause/from/fixture/limit-offset.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/limit.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/order-by-desc-fix.js +0 -13
- package/lib/parser/visitors/clause/from/fixture/order-by-desc.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/order-by-fix.js +0 -11
- package/lib/parser/visitors/clause/from/fixture/order-by-multi-fix.js +0 -14
- package/lib/parser/visitors/clause/from/fixture/order-by-multi.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/order-by.sql +0 -1
- package/lib/parser/visitors/clause/from/fixture/unnest-fix.js +0 -10
- package/lib/parser/visitors/clause/from/fixture/unnest.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-fix.js +0 -11
- package/lib/parser/visitors/clause/insert/fixture/insert-identifier-fix.js +0 -17
- package/lib/parser/visitors/clause/insert/fixture/insert-identifier.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-multi-fix.js +0 -11
- package/lib/parser/visitors/clause/insert/fixture/insert-multi.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-number-fix.js +0 -18
- package/lib/parser/visitors/clause/insert/fixture/insert-number.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-returning-conflict-fix.js +0 -20
- package/lib/parser/visitors/clause/insert/fixture/insert-returning-conflict.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-returning-fix.js +0 -14
- package/lib/parser/visitors/clause/insert/fixture/insert-returning-id-fix.js +0 -14
- package/lib/parser/visitors/clause/insert/fixture/insert-returning-id.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-returning.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert-string-fix.js +0 -17
- package/lib/parser/visitors/clause/insert/fixture/insert-string.sql +0 -1
- package/lib/parser/visitors/clause/insert/fixture/insert.sql +0 -1
- package/lib/parser/visitors/clause/on-conflict/fixture/on-conflict-fix.js +0 -17
- package/lib/parser/visitors/clause/on-conflict/fixture/on-conflict-nothing-fix.js +0 -14
- package/lib/parser/visitors/clause/on-conflict/fixture/on-conflict-nothing.sql +0 -1
- package/lib/parser/visitors/clause/on-conflict/fixture/on-conflict.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-abs-fix.js +0 -8
- package/lib/parser/visitors/clause/select/fixture/select-abs.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-alias-fix.js +0 -9
- package/lib/parser/visitors/clause/select/fixture/select-alias-param-fix.js +0 -8
- package/lib/parser/visitors/clause/select/fixture/select-alias-param.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-alias.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-avg-fix.js +0 -10
- package/lib/parser/visitors/clause/select/fixture/select-avg.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-count-col-fix.js +0 -10
- package/lib/parser/visitors/clause/select/fixture/select-count-col.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-distinct-fix.js +0 -10
- package/lib/parser/visitors/clause/select/fixture/select-distinct-multi-fix.js +0 -11
- package/lib/parser/visitors/clause/select/fixture/select-distinct-multi.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-distinct.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-fix.js +0 -8
- package/lib/parser/visitors/clause/select/fixture/select-last-insert-rowid-fix.js +0 -8
- package/lib/parser/visitors/clause/select/fixture/select-last-insert-rowid.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-lastval-fix.js +0 -8
- package/lib/parser/visitors/clause/select/fixture/select-lastval.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-min-max-fix.js +0 -13
- package/lib/parser/visitors/clause/select/fixture/select-min-max.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-number-fix.js +0 -11
- package/lib/parser/visitors/clause/select/fixture/select-number.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-param-fix.js +0 -9
- package/lib/parser/visitors/clause/select/fixture/select-param.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select-sum-fix.js +0 -10
- package/lib/parser/visitors/clause/select/fixture/select-sum.sql +0 -1
- package/lib/parser/visitors/clause/select/fixture/select.sql +0 -1
- package/lib/parser/visitors/clause/union/fixture/union-all-fix.js +0 -10
- package/lib/parser/visitors/clause/union/fixture/union-all.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-fix.js +0 -11
- package/lib/parser/visitors/clause/update/fixture/update-identifier-fix.js +0 -11
- package/lib/parser/visitors/clause/update/fixture/update-identifier.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-no-where-fix.js +0 -8
- package/lib/parser/visitors/clause/update/fixture/update-no-where.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-number-fix.js +0 -11
- package/lib/parser/visitors/clause/update/fixture/update-number.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-string-fix.js +0 -11
- package/lib/parser/visitors/clause/update/fixture/update-string.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-and-fix.js +0 -11
- package/lib/parser/visitors/clause/update/fixture/update-where-and.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-in-fix.js +0 -16
- package/lib/parser/visitors/clause/update/fixture/update-where-in.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-is-not-null-fix.js +0 -13
- package/lib/parser/visitors/clause/update/fixture/update-where-is-not-null.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-is-null-fix.js +0 -13
- package/lib/parser/visitors/clause/update/fixture/update-where-is-null.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-like-fix.js +0 -14
- package/lib/parser/visitors/clause/update/fixture/update-where-like.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-not-in-fix.js +0 -16
- package/lib/parser/visitors/clause/update/fixture/update-where-not-in.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update-where-or-fix.js +0 -11
- package/lib/parser/visitors/clause/update/fixture/update-where-or.sql +0 -1
- package/lib/parser/visitors/clause/update/fixture/update.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-between-fix.js +0 -15
- package/lib/parser/visitors/clause/where/fixture/where-between.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-boolean-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-boolean.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-compare-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-compare.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-gte-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-gte.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-in-fix.js +0 -16
- package/lib/parser/visitors/clause/where/fixture/where-in.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-is-not-null-fix.js +0 -13
- package/lib/parser/visitors/clause/where/fixture/where-is-not-null.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-is-null-fix.js +0 -13
- package/lib/parser/visitors/clause/where/fixture/where-is-null.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-like-fix.js +0 -14
- package/lib/parser/visitors/clause/where/fixture/where-like.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-member-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-member.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-not-eq-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-not-eq.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-not-in-fix.js +0 -16
- package/lib/parser/visitors/clause/where/fixture/where-not-in.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-null-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-null.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-number-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-number.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where-or-fix.js +0 -11
- package/lib/parser/visitors/clause/where/fixture/where-or.sql +0 -1
- package/lib/parser/visitors/clause/where/fixture/where.sql +0 -1
- package/lib/parser/visitors/clause/with-named/fixture/with-named-select-fix.js +0 -19
- package/lib/parser/visitors/clause/with-named/fixture/with-named-select.sql +0 -1
- package/lib/parser/visitors/clause/with-named/fixture/with-recursive-fix.js +0 -27
- package/lib/parser/visitors/clause/with-named/fixture/with-recursive-multi-fix.js +0 -38
- package/lib/parser/visitors/clause/with-named/fixture/with-recursive-multi.sql +0 -1
- package/lib/parser/visitors/clause/with-named/fixture/with-recursive-no-columns-fix.js +0 -20
- package/lib/parser/visitors/clause/with-named/fixture/with-recursive-no-columns.sql +0 -1
- package/lib/parser/visitors/clause/with-named/fixture/with-recursive.sql +0 -1
- package/lib/printer/fixture/select-fix.sql +0 -2
- package/lib/printer/fixture/select.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/avg/fixture/avg-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/avg/fixture/avg.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/between/fixture/between-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/between/fixture/between.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/count/fixture/count-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/count/fixture/count-one-fix.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/count/fixture/count-one-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/count/fixture/count-one.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/count/fixture/count.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/create-sequence/fixture/create-sequence-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/create-sequence/fixture/create-sequence.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTable-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTable.js +0 -5
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTableIdentity-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTableIdentity.js +0 -5
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTableIdentityByDefault-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTableIdentityByDefault.js +0 -5
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTableSerial-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/create-table/fixture/createTableSerial.js +0 -5
- package/lib/printer/visitors/call-expression/clauses/delete/fixture/delete-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/delete/fixture/delete.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/desc/fixture/desc-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/desc/fixture/desc.js +0 -13
- package/lib/printer/visitors/call-expression/clauses/distinct/fixture/distinct-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/distinct/fixture/distinct-multi-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/distinct/fixture/distinct-multi.js +0 -11
- package/lib/printer/visitors/call-expression/clauses/distinct/fixture/distinct.js +0 -10
- package/lib/printer/visitors/call-expression/clauses/from/fixture/from-fix.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/from/fixture/from-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/from/fixture/from.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/from/fixture/generate-series-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/from/fixture/generate-series.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/from/fixture/group-by-having-fix.sql +0 -5
- package/lib/printer/visitors/call-expression/clauses/from/fixture/group-by-having.js +0 -22
- package/lib/printer/visitors/call-expression/clauses/group-by/fixture/group-by-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/group-by/fixture/group-by-multi-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/group-by/fixture/group-by-multi.js +0 -13
- package/lib/printer/visitors/call-expression/clauses/group-by/fixture/group-by-sum-fix.sql +0 -4
- package/lib/printer/visitors/call-expression/clauses/group-by/fixture/group-by-sum.js +0 -19
- package/lib/printer/visitors/call-expression/clauses/group-by/fixture/group-by.js +0 -14
- package/lib/printer/visitors/call-expression/clauses/having/fixture/having-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/having/fixture/having.js +0 -16
- package/lib/printer/visitors/call-expression/clauses/insert/fixture/insert-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/insert/fixture/insert.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/into/fixture/into-fix.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/into/fixture/into-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/into/fixture/into.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/into/fixture/single-column-fix.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/into/fixture/single-column-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/into/fixture/single-column.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/join/fixture/join-bare-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/join/fixture/join-bare.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/join/fixture/join-fix.sql +0 -4
- package/lib/printer/visitors/call-expression/clauses/join/fixture/join-multi-fix.sql +0 -4
- package/lib/printer/visitors/call-expression/clauses/join/fixture/join-multi.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/join/fixture/join.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/last-insert-rowid/fixture/lastInsertRowid-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/last-insert-rowid/fixture/lastInsertRowid.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/lastval/fixture/lastval-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/lastval/fixture/lastval.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/limit/fixture/limit-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/limit/fixture/limit-offset-fix.sql +0 -4
- package/lib/printer/visitors/call-expression/clauses/limit/fixture/limit-offset.js +0 -12
- package/lib/printer/visitors/call-expression/clauses/limit/fixture/limit.js +0 -11
- package/lib/printer/visitors/call-expression/clauses/max/fixture/max-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/max/fixture/max.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/min/fixture/min-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/min/fixture/min.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/nextval/fixture/nextval-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/nextval/fixture/nextval.js +0 -6
- package/lib/printer/visitors/call-expression/clauses/not-in-list/fixture/not-in-list-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/not-in-list/fixture/not-in-list.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/on-conflict/fixture/on-conflict-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/on-conflict/fixture/on-conflict-multi-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/on-conflict/fixture/on-conflict-multi.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/on-conflict/fixture/on-conflict.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/order-by/fixture/order-by-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/order-by/fixture/order-by-multi-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/order-by/fixture/order-by-multi.js +0 -14
- package/lib/printer/visitors/call-expression/clauses/order-by/fixture/order-by.js +0 -11
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-conflict-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-conflict.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-id-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-id.js +0 -7
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-multi-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning-multi.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/returning/fixture/returning.js +0 -7
- package/lib/printer/visitors/call-expression/clauses/section/fixture/section-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/section/fixture/section-multi-fix.sql +0 -8
- package/lib/printer/visitors/call-expression/clauses/section/fixture/section-multi.js +0 -6
- package/lib/printer/visitors/call-expression/clauses/section/fixture/section.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/select/fixture/select-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/select/fixture/select.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/select/fixture/string-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/select/fixture/string.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/set/fixture/set-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/sum/fixture/sum-fix.sql +0 -2
- package/lib/printer/visitors/call-expression/clauses/sum/fixture/sum.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/union-all/fixture/union-all-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/union-all/fixture/union-all.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/update/fixture/update-fix.sql +0 -3
- package/lib/printer/visitors/call-expression/clauses/update/fixture/update.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/values/fixture/values-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/values/fixture/values-quoted-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/values/fixture/values-quoted.js +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-gte-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-gte.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-in-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-in.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-is-not-null-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-is-not-null.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-is-null-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-is-null.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-like-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-like.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-ne-fix.sql +0 -1
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where-ne.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/where/fixture/where.js +0 -3
- package/lib/printer/visitors/call-expression/clauses/with-named/fixture/with-named-insert-fix.sql +0 -12
- package/lib/printer/visitors/call-expression/clauses/with-named/fixture/with-named-insert.js +0 -11
- package/lib/printer/visitors/call-expression/clauses/with-named/fixture/with-named-select-fix.sql +0 -8
- package/lib/printer/visitors/call-expression/clauses/with-named/fixture/with-named-select.js +0 -19
- package/lib/printer/visitors/call-expression/clauses/with-named/fixture/withNamed-fix.sql +0 -12
- package/lib/printer/visitors/call-expression/clauses/with-named/fixture/withNamed.js +0 -11
- package/lib/printer/visitors/call-expression/clauses/with-recursive/fixture/with-recursive-fix.sql +0 -10
- package/lib/printer/visitors/call-expression/clauses/with-recursive/fixture/with-recursive-multi-fix.sql +0 -14
- package/lib/printer/visitors/call-expression/clauses/with-recursive/fixture/with-recursive-multi.js +0 -38
- package/lib/printer/visitors/call-expression/clauses/with-recursive/fixture/with-recursive-no-columns-fix.sql +0 -8
- package/lib/printer/visitors/call-expression/clauses/with-recursive/fixture/with-recursive-no-columns.js +0 -20
- package/lib/printer/visitors/call-expression/clauses/with-recursive/fixture/with-recursive.js +0 -27
- package/lib/printer/visitors/fixture/binary-expression-fix.sql +0 -1
- package/lib/printer/visitors/fixture/binary-expression.js +0 -3
|
@@ -3,8 +3,25 @@ import {convertClause} from '#parser/clause';
|
|
|
3
3
|
|
|
4
4
|
const {callExpression, identifier} = types;
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const getOpNames = (operator) => {
|
|
7
|
+
if (Array.isArray(operator)) {
|
|
8
|
+
const names = [];
|
|
9
|
+
|
|
10
|
+
for (const kw of operator)
|
|
11
|
+
names.push(kw.name);
|
|
12
|
+
|
|
13
|
+
return names;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return [operator.name];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const convertUnion = (stmt) => {
|
|
20
|
+
const ops = getOpNames(stmt.operator);
|
|
21
|
+
const isAll = ops.includes('ALL');
|
|
22
|
+
const name = isAll ? 'unionAll' : 'union';
|
|
23
|
+
|
|
24
|
+
return callExpression(identifier(name), [
|
|
8
25
|
convertClause(stmt.left),
|
|
9
26
|
convertClause(stmt.right),
|
|
10
27
|
]);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {types} from '@putout/babel';
|
|
2
2
|
import {convertWhere} from '#parser/clause/where';
|
|
3
3
|
import {convertOperand} from '#parser/clause/operand';
|
|
4
|
+
import {convertReturning} from '#parser/clause/returning';
|
|
4
5
|
import {findClause} from '#parser/clause/find';
|
|
5
6
|
|
|
6
7
|
const {
|
|
@@ -12,7 +13,9 @@ const {
|
|
|
12
13
|
export const convertUpdate = ({clauses}) => {
|
|
13
14
|
const updateClause = findClause(clauses, 'update_clause');
|
|
14
15
|
const setClause = findClause(clauses, 'set_clause');
|
|
16
|
+
const fromClause = findClause(clauses, 'from_clause');
|
|
15
17
|
const whereClause = findClause(clauses, 'where_clause');
|
|
18
|
+
const returningClause = findClause(clauses, 'returning_clause');
|
|
16
19
|
|
|
17
20
|
const table = identifier(updateClause.tables.items[0].name);
|
|
18
21
|
const setArgs = [];
|
|
@@ -26,8 +29,14 @@ export const convertUpdate = ({clauses}) => {
|
|
|
26
29
|
const args = [
|
|
27
30
|
table,
|
|
28
31
|
setCall,
|
|
32
|
+
fromClause && convertFromClause(fromClause),
|
|
29
33
|
whereClause && convertWhere(whereClause),
|
|
34
|
+
returningClause && convertReturning(returningClause),
|
|
30
35
|
].filter(Boolean);
|
|
31
36
|
|
|
32
37
|
return callExpression(identifier('update'), args);
|
|
33
38
|
};
|
|
39
|
+
|
|
40
|
+
const convertFromClause = (fromClause) => callExpression(identifier('updateFrom'), [
|
|
41
|
+
identifier(fromClause.expr.name),
|
|
42
|
+
]);
|
|
@@ -1,101 +1,59 @@
|
|
|
1
1
|
import {types} from '@putout/babel';
|
|
2
2
|
import {convertOperand} from '#parser/clause/operand';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import {convertClause} from '#parser/clause';
|
|
4
|
+
import {convertBinary} from '#parser/clause/binary';
|
|
5
5
|
|
|
6
6
|
const {
|
|
7
7
|
logicalExpression,
|
|
8
8
|
identifier,
|
|
9
9
|
callExpression,
|
|
10
|
-
binaryExpression,
|
|
11
10
|
} = types;
|
|
12
11
|
|
|
13
|
-
const opName = (op) => {
|
|
14
|
-
if (Array.isArray(op))
|
|
15
|
-
return op
|
|
16
|
-
.map((k) => k.name)
|
|
17
|
-
.join(' ');
|
|
18
|
-
|
|
19
|
-
if (isString(op))
|
|
20
|
-
return op;
|
|
21
|
-
|
|
22
|
-
return op?.name ?? '';
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const SQL_TO_JS_OP = {
|
|
26
|
-
'=': '===',
|
|
27
|
-
'!=': '!==',
|
|
28
|
-
'>=': '>=',
|
|
29
|
-
'<=': '<=',
|
|
30
|
-
'>': '>',
|
|
31
|
-
'<': '<',
|
|
32
|
-
};
|
|
33
|
-
|
|
34
12
|
const convertAnd = (node) => logicalExpression('&&', convertCondition(node.left), convertCondition(node.right));
|
|
35
13
|
const convertOr = (node) => logicalExpression('||', convertCondition(node.left), convertCondition(node.right));
|
|
36
14
|
|
|
37
|
-
|
|
38
|
-
convertOperand(node.left),
|
|
39
|
-
convertOperand(node.begin),
|
|
40
|
-
convertOperand(node.end),
|
|
41
|
-
]);
|
|
15
|
+
const isNotBetween = (node) => Array.isArray(node.betweenKw) && node.betweenKw[0].name === 'NOT';
|
|
42
16
|
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
convertOperand(node.right),
|
|
50
|
-
]);
|
|
51
|
-
|
|
52
|
-
if (op === 'IS')
|
|
53
|
-
return callExpression(identifier('isNull'), [
|
|
54
|
-
convertOperand(node.left),
|
|
55
|
-
]);
|
|
56
|
-
|
|
57
|
-
if (op === 'IS NOT')
|
|
58
|
-
return callExpression(identifier('isNotNull'), [
|
|
59
|
-
convertOperand(node.left),
|
|
60
|
-
]);
|
|
61
|
-
|
|
62
|
-
if (op === 'IN') {
|
|
63
|
-
const items = node.right.expr.items.map(convertOperand);
|
|
64
|
-
|
|
65
|
-
return callExpression(identifier('inList'), [
|
|
66
|
-
convertOperand(node.left),
|
|
67
|
-
...items,
|
|
68
|
-
]);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (op === 'NOT IN') {
|
|
72
|
-
const items = node.right.expr.items.map(convertOperand);
|
|
73
|
-
|
|
74
|
-
return callExpression(identifier('notInList'), [
|
|
75
|
-
convertOperand(node.left),
|
|
76
|
-
...items,
|
|
77
|
-
]);
|
|
78
|
-
}
|
|
17
|
+
export const convertBetween = (node) => {
|
|
18
|
+
const args = [
|
|
19
|
+
convertOperand(node.left),
|
|
20
|
+
convertOperand(node.begin),
|
|
21
|
+
convertOperand(node.end),
|
|
22
|
+
];
|
|
79
23
|
|
|
80
|
-
|
|
24
|
+
if (isNotBetween(node))
|
|
25
|
+
return callExpression(identifier('notBetween'), args);
|
|
81
26
|
|
|
82
|
-
return
|
|
83
|
-
jsOp,
|
|
84
|
-
convertOperand(node.left),
|
|
85
|
-
convertOperand(node.right),
|
|
86
|
-
);
|
|
27
|
+
return callExpression(identifier('between'), args);
|
|
87
28
|
};
|
|
88
29
|
|
|
30
|
+
const isExists = (node) => node.type === 'prefix_op_expr' && node.operator.name === 'EXISTS';
|
|
31
|
+
const isNotExists = (node) => node.type === 'prefix_op_expr' && node.operator.name === 'NOT' && isExists(node.expr);
|
|
32
|
+
const isParenExpr = (node) => node.type === 'paren_expr';
|
|
33
|
+
|
|
89
34
|
export const convertCondition = (node) => {
|
|
90
|
-
if (node.operator
|
|
35
|
+
if (node.operator && node.operator.name === 'AND')
|
|
91
36
|
return convertAnd(node);
|
|
92
37
|
|
|
93
|
-
if (node.operator
|
|
38
|
+
if (node.operator && node.operator.name === 'OR')
|
|
94
39
|
return convertOr(node);
|
|
95
40
|
|
|
96
41
|
if (node.type === 'between_expr')
|
|
97
42
|
return convertBetween(node);
|
|
98
43
|
|
|
44
|
+
if (isNotExists(node))
|
|
45
|
+
return callExpression(identifier('notExists'), [
|
|
46
|
+
convertClause(node.expr.expr.expr),
|
|
47
|
+
]);
|
|
48
|
+
|
|
49
|
+
if (isExists(node))
|
|
50
|
+
return callExpression(identifier('exists'), [
|
|
51
|
+
convertClause(node.expr.expr),
|
|
52
|
+
]);
|
|
53
|
+
|
|
54
|
+
if (isParenExpr(node))
|
|
55
|
+
return convertCondition(node.expr);
|
|
56
|
+
|
|
99
57
|
return convertBinary(node);
|
|
100
58
|
};
|
|
101
59
|
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import {isJsonTuple, printJsonTuple} from './call-expression/clauses/json-op.js';
|
|
2
|
+
|
|
3
|
+
export const ArrayExpression = (path, printer) => {
|
|
4
|
+
const {write, traverse} = printer;
|
|
5
|
+
|
|
6
|
+
if (isJsonTuple(path.node))
|
|
7
|
+
return printJsonTuple(path, printer);
|
|
8
|
+
|
|
2
9
|
const elements = path.get('elements');
|
|
3
10
|
const n = elements.length - 1;
|
|
4
11
|
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
import {clauses} from './clauses/clauses.js';
|
|
2
2
|
|
|
3
|
+
const printGenericCall = (path, {write, traverse}) => {
|
|
4
|
+
const {name} = path.node.callee;
|
|
5
|
+
const args = path.get('arguments');
|
|
6
|
+
|
|
7
|
+
write(name);
|
|
8
|
+
write('(');
|
|
9
|
+
|
|
10
|
+
for (const [i, arg] of args.entries()) {
|
|
11
|
+
if (i > 0)
|
|
12
|
+
write(', ');
|
|
13
|
+
|
|
14
|
+
traverse(arg);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
write(')');
|
|
18
|
+
};
|
|
19
|
+
|
|
3
20
|
export const CallExpression = (path, printer) => {
|
|
4
21
|
const {name} = path.node.callee;
|
|
5
22
|
const visit = clauses[name];
|
|
6
23
|
|
|
7
24
|
if (!visit)
|
|
8
|
-
|
|
25
|
+
return printGenericCall(path, printer);
|
|
9
26
|
|
|
10
27
|
visit(path, printer);
|
|
11
28
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const isElseClause = (path) => {
|
|
2
|
+
const {callee} = path.node;
|
|
3
|
+
|
|
4
|
+
return callee && callee.name === 'else_';
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const caseWhen = (path, printer) => {
|
|
8
|
+
const {write} = printer;
|
|
9
|
+
const args = path.get('arguments');
|
|
10
|
+
const lastArg = args.at(-1);
|
|
11
|
+
const hasElse = isElseClause(lastArg);
|
|
12
|
+
|
|
13
|
+
write('CASE ');
|
|
14
|
+
|
|
15
|
+
for (let i = 0; i < args.length - 1; i += 2) {
|
|
16
|
+
write('WHEN ');
|
|
17
|
+
printer.traverse(args[i]);
|
|
18
|
+
write(' THEN ');
|
|
19
|
+
printer.traverse(args[i + 1]);
|
|
20
|
+
|
|
21
|
+
// space between clauses / before ELSE — but not trailing
|
|
22
|
+
if (i < args.length - 3)
|
|
23
|
+
write(' ');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (hasElse) {
|
|
27
|
+
write(' ');
|
|
28
|
+
write('ELSE ');
|
|
29
|
+
printer.traverse(lastArg.get('arguments')[0]);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
write(' END');
|
|
33
|
+
};
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import {fullOuterJoin} from './full-outer-join/full-outer-join.js';
|
|
1
2
|
import {join} from './join/join.js';
|
|
3
|
+
import {naturalJoin} from './natural-join/natural-join.js';
|
|
4
|
+
import {notLike} from './not-like/not-like.js';
|
|
5
|
+
import {ilike} from './ilike/ilike.js';
|
|
6
|
+
import {similarTo} from './similar-to/similar-to.js';
|
|
7
|
+
import {isDistinctFrom} from './is-distinct-from/is-distinct-from.js';
|
|
2
8
|
import {on} from './on/on.js';
|
|
3
9
|
import {select} from './select/select.js';
|
|
4
10
|
import {from} from './from/from.js';
|
|
@@ -8,6 +14,7 @@ import {into} from './into/into.js';
|
|
|
8
14
|
import {values} from './values/values.js';
|
|
9
15
|
import {onConflict} from './on-conflict/on-conflict.js';
|
|
10
16
|
import {update} from './update/update.js';
|
|
17
|
+
import {updateFrom} from './update-from/update-from.js';
|
|
11
18
|
import {set} from './set/set.js';
|
|
12
19
|
import {deleteFrom} from './delete/delete.js';
|
|
13
20
|
import {section} from './section/section.js';
|
|
@@ -16,6 +23,7 @@ import {returning} from './returning/returning.js';
|
|
|
16
23
|
import {withNamed} from './with-named/with-named.js';
|
|
17
24
|
import {withRecursive} from './with-recursive/with-recursive.js';
|
|
18
25
|
import {unionAll} from './union-all/union-all.js';
|
|
26
|
+
import {union} from './union/union.js';
|
|
19
27
|
import {groupBy} from './group-by/group-by.js';
|
|
20
28
|
import {having} from './having/having.js';
|
|
21
29
|
import {sum} from './sum/sum.js';
|
|
@@ -28,8 +36,55 @@ import {limit} from './limit/limit.js';
|
|
|
28
36
|
import {distinct} from './distinct/distinct.js';
|
|
29
37
|
import {notInList} from './not-in-list/not-in-list.js';
|
|
30
38
|
import {between} from './between/between.js';
|
|
39
|
+
import {notBetween} from './not-between/not-between.js';
|
|
40
|
+
import {subquery} from './subquery/subquery.js';
|
|
41
|
+
import {inQuery} from './in-query/in-query.js';
|
|
42
|
+
import {exists} from './exists/exists.js';
|
|
43
|
+
import {notExists} from './not-exists/not-exists.js';
|
|
44
|
+
import {cast} from './cast/cast.js';
|
|
45
|
+
import {pgCast} from './pg-cast/pg-cast.js';
|
|
46
|
+
import {ANY} from './any/any.js';
|
|
47
|
+
import {ALL} from './all/all.js';
|
|
48
|
+
import {lateralJoin} from './lateral-join/lateral-join.js';
|
|
49
|
+
import {lateralSubquery} from './lateral-subquery/lateral-subquery.js';
|
|
50
|
+
import {createIndex} from './create-index/create-index.js';
|
|
51
|
+
import {createUniqueIndex} from './create-index/create-unique-index.js';
|
|
52
|
+
import {vacuum} from './vacuum/vacuum.js';
|
|
53
|
+
import {row} from './row/row.js';
|
|
54
|
+
import {notNull} from './not-null/not-null.js';
|
|
55
|
+
import {default_} from './default/default.js';
|
|
56
|
+
import {unique} from './unique/unique.js';
|
|
57
|
+
import {check} from './check/check.js';
|
|
58
|
+
import {references} from './references/references.js';
|
|
59
|
+
import {createTableIfNotExists} from './create-table-if-not-exists/create-table-if-not-exists.js';
|
|
60
|
+
import {caseWhen} from './case-when/case-when.js';
|
|
61
|
+
import {leftJoin} from './left-join/left-join.js';
|
|
62
|
+
import {rightJoin} from './right-join/right-join.js';
|
|
63
|
+
import {innerJoin} from './inner-join/inner-join.js';
|
|
64
|
+
import {leftOuterJoin} from './left-outer-join/left-outer-join.js';
|
|
65
|
+
import {crossJoin} from './cross-join/cross-join.js';
|
|
31
66
|
import {createTable} from './create-table/create-table.js';
|
|
67
|
+
import {alterTable} from './alter-table/alter-table.js';
|
|
68
|
+
import {addColumn} from './add-column/add-column.js';
|
|
69
|
+
import {dropColumn} from './drop-column/drop-column.js';
|
|
70
|
+
import {renameColumn} from './rename-column/rename-column.js';
|
|
71
|
+
import {alterColumnType} from './alter-column-type/alter-column-type.js';
|
|
72
|
+
import {begin} from './begin/begin.js';
|
|
73
|
+
import {commit} from './commit/commit.js';
|
|
74
|
+
import {rollback} from './rollback/rollback.js';
|
|
75
|
+
import {rollbackTo} from './rollback-to/rollback-to.js';
|
|
76
|
+
import {savepoint} from './savepoint/savepoint.js';
|
|
32
77
|
import {createSequence} from './create-sequence/create-sequence.js';
|
|
78
|
+
import {extract} from './extract/extract.js';
|
|
79
|
+
import {concat} from './concat/concat.js';
|
|
80
|
+
import {array} from './array/array.js';
|
|
81
|
+
import {over} from './over/over.js';
|
|
82
|
+
import {partitionBy} from './partition-by/partition-by.js';
|
|
83
|
+
import {rowNumber} from './row-number/row-number.js';
|
|
84
|
+
import {dropTable} from './drop-table/drop-table.js';
|
|
85
|
+
import {dropIndex} from './drop-index/drop-index.js';
|
|
86
|
+
import {pragma} from './pragma/pragma.js';
|
|
87
|
+
import {attach} from './attach/attach.js';
|
|
33
88
|
import {column} from './column/column.js';
|
|
34
89
|
import {autoIncrement} from './auto-increment/auto-increment.js';
|
|
35
90
|
import {serial} from './serial/serial.js';
|
|
@@ -39,6 +94,8 @@ import {lastval} from './lastval/lastval.js';
|
|
|
39
94
|
import {nextval} from './nextval/nextval.js';
|
|
40
95
|
import {like} from './like/like.js';
|
|
41
96
|
import {isNull, isNotNull} from './is-null/is-null.js';
|
|
97
|
+
import {orReplace} from './or-replace/or-replace.js';
|
|
98
|
+
import {orIgnore} from './or-ignore/or-ignore.js';
|
|
42
99
|
import {inList} from './in-list/in-list.js';
|
|
43
100
|
import {
|
|
44
101
|
identity,
|
|
@@ -54,9 +111,27 @@ export const clauses = {
|
|
|
54
111
|
where,
|
|
55
112
|
insert,
|
|
56
113
|
into,
|
|
114
|
+
orReplace,
|
|
115
|
+
orIgnore,
|
|
116
|
+
pgCast,
|
|
117
|
+
ANY,
|
|
118
|
+
ALL,
|
|
119
|
+
lateralJoin,
|
|
120
|
+
lateralSubquery,
|
|
121
|
+
createIndex,
|
|
122
|
+
createUniqueIndex,
|
|
123
|
+
vacuum,
|
|
124
|
+
row,
|
|
125
|
+
notNull,
|
|
126
|
+
default_,
|
|
127
|
+
unique,
|
|
128
|
+
check,
|
|
129
|
+
references,
|
|
130
|
+
createTableIfNotExists,
|
|
57
131
|
values,
|
|
58
132
|
onConflict,
|
|
59
133
|
update,
|
|
134
|
+
updateFrom,
|
|
60
135
|
set,
|
|
61
136
|
deleteFrom,
|
|
62
137
|
section,
|
|
@@ -64,6 +139,7 @@ export const clauses = {
|
|
|
64
139
|
withNamed,
|
|
65
140
|
withRecursive,
|
|
66
141
|
unionAll,
|
|
142
|
+
union,
|
|
67
143
|
groupBy,
|
|
68
144
|
having,
|
|
69
145
|
sum,
|
|
@@ -75,9 +151,43 @@ export const clauses = {
|
|
|
75
151
|
limit,
|
|
76
152
|
distinct,
|
|
77
153
|
notInList,
|
|
154
|
+
notBetween,
|
|
78
155
|
between,
|
|
156
|
+
subquery,
|
|
157
|
+
inQuery,
|
|
158
|
+
exists,
|
|
159
|
+
notExists,
|
|
160
|
+
cast,
|
|
161
|
+
caseWhen,
|
|
162
|
+
leftJoin,
|
|
163
|
+
rightJoin,
|
|
164
|
+
innerJoin,
|
|
165
|
+
leftOuterJoin,
|
|
166
|
+
fullOuterJoin,
|
|
167
|
+
naturalJoin,
|
|
168
|
+
crossJoin,
|
|
79
169
|
createTable,
|
|
170
|
+
alterTable,
|
|
171
|
+
addColumn,
|
|
172
|
+
dropColumn,
|
|
173
|
+
renameColumn,
|
|
174
|
+
alterColumnType,
|
|
175
|
+
begin,
|
|
176
|
+
commit,
|
|
177
|
+
rollback,
|
|
178
|
+
rollbackTo,
|
|
179
|
+
savepoint,
|
|
80
180
|
createSequence,
|
|
181
|
+
extract,
|
|
182
|
+
concat,
|
|
183
|
+
array,
|
|
184
|
+
over,
|
|
185
|
+
partitionBy,
|
|
186
|
+
rowNumber,
|
|
187
|
+
dropTable,
|
|
188
|
+
dropIndex,
|
|
189
|
+
pragma,
|
|
190
|
+
attach,
|
|
81
191
|
column,
|
|
82
192
|
autoIncrement,
|
|
83
193
|
serial,
|
|
@@ -86,6 +196,10 @@ export const clauses = {
|
|
|
86
196
|
lastval,
|
|
87
197
|
nextval,
|
|
88
198
|
like,
|
|
199
|
+
notLike,
|
|
200
|
+
ilike,
|
|
201
|
+
similarTo,
|
|
202
|
+
isDistinctFrom,
|
|
89
203
|
isNull,
|
|
90
204
|
isNotNull,
|
|
91
205
|
inList,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const createIndex = (path, {write, traverse}) => {
|
|
2
|
+
const args = path.get('arguments');
|
|
3
|
+
|
|
4
|
+
write('CREATE INDEX ');
|
|
5
|
+
traverse(args[0]);
|
|
6
|
+
write(' ON ');
|
|
7
|
+
traverse(args[1]);
|
|
8
|
+
write(' (');
|
|
9
|
+
|
|
10
|
+
for (const [i, arg] of args
|
|
11
|
+
.slice(2)
|
|
12
|
+
.entries()) {
|
|
13
|
+
if (i > 0)
|
|
14
|
+
write(', ');
|
|
15
|
+
|
|
16
|
+
traverse(arg);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
write(')');
|
|
20
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const createUniqueIndex = (path, {write, traverse}) => {
|
|
2
|
+
const args = path.get('arguments');
|
|
3
|
+
|
|
4
|
+
write('CREATE UNIQUE INDEX ');
|
|
5
|
+
traverse(args[0]);
|
|
6
|
+
write(' ON ');
|
|
7
|
+
traverse(args[1]);
|
|
8
|
+
write(' (');
|
|
9
|
+
|
|
10
|
+
for (const [i, arg] of args
|
|
11
|
+
.slice(2)
|
|
12
|
+
.entries()) {
|
|
13
|
+
if (i > 0)
|
|
14
|
+
write(', ');
|
|
15
|
+
|
|
16
|
+
traverse(arg);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
write(')');
|
|
20
|
+
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const printTableBody = (path, {write, traverse}) => {
|
|
2
2
|
const [name, columns] = path.get('arguments');
|
|
3
3
|
|
|
4
|
-
write('CREATE TABLE ');
|
|
5
4
|
traverse(name);
|
|
6
5
|
write.space();
|
|
7
6
|
write('(');
|
|
@@ -20,3 +19,8 @@ export const createTable = (path, {write, traverse}) => {
|
|
|
20
19
|
|
|
21
20
|
write(')');
|
|
22
21
|
};
|
|
22
|
+
|
|
23
|
+
export const createTable = (path, printer) => {
|
|
24
|
+
printer.write('CREATE TABLE ');
|
|
25
|
+
printTableBody(path, printer);
|
|
26
|
+
};
|