Commit Graph

652 Commits

Author SHA1 Message Date
parsonsmatt
0484dfb8d4 v3.3.3.0 2020-03-29 10:42:23 -06:00
Ben Levy
56e4b83e5c
New syntax for Joins (Subquery + Union/Intersect/...) (#172)
* It works?

* Add multiple return values back in

* Allow order by alias

* Support groupBy and count, Returning value from a fromQuery now will make it into an alias

* Eliminate Alias type, TODO: finish implementing all the functions on Value for the alias constructors

* Add entity support to subqueries

* Cleanup duplication; Cleanup warnings and finish implementing all the cases for aliased values and entities.

* Cleanup fromQuery and add comments

* Modify EValueReference to support aliased entity fields instead of having to use opaque ERaw in field access

* Implement SQL Set Operations

* Add test to show novel use of fromQuery

* Cleanup unsafe case statements

* Add type annotations to helper queries to satisfy the typechecker on older GHC

* New syntax for joins, using placeholder names with ' in them to avoid name conflict with existing join types.
New api properly enforces Maybe on outer joins and requires an on clause for all joins in their construction.

* Add some more test queries using the new syntax

* Add test to verify that delete works with the new syntax

* Add cross join and implicit cross join using comma examples to test code for new from syntax

* Comment out use of CrossJoin in common tests since postgres cant handle it with the current implementation of the CrossJoin kind

* Add typeclass machinery to support the use of the old Join data types used in the existing from clause

* Fix bug with CrossJoin and add on_ syntax sugar

* move new from syntax into Database.Esqueleto.Experimental

* Merge subqueries and unions with the new join syntax, they all seem to play nicely together

* Cleanup somehow copies of ToAlias ended up staying in Internal and a swp file made it in to the branch.

* Fix compilation errors

* Swith tuple to using a TypeOperator

* Make operator only 2 characters

* added up to 8-tuple instances for ToMaybe, ToAlias, and ToAliasReference

* Add compiler error tests for new syntax to support making better errors

* Use closed data families to allow for catching missing on statements in joins.

* Convert ToAliasReferenceT to be a closed type family matching the other classes in the Experimental module

* added Esqueleto.Experimental documentation: added introduction and several examples of old vs. new syntax

* added more usage examples to module introduction; added documentation to SqlSetOperation, From, on, from, and (:&)

* Update (^.) to only treat natural keys with more than one component as ECompositeKey. Fixes #176.

* Update article metadata test to ensure the correct response was being returned instead of just check if an exception was thrown

* Add article metadata to cleanDB before deleting all articles to fix foreign key constraint errors

* Bump version number and add changelog entry

* Fix issue with ToMaybeT for Values, Maybe was going in the wrong place compared to the rest of the library. Add test to prove that Left joining into a subquery that returns a maybe flattens the maybe properly to avoid needing to call joinV.

* Fix common test for postgres, needed to add dogCounts to the group by since postgres is strict on only agregates for non grouped columns; I really need to set up a local postgresql

* Revert ToFromT changes. Only accept functions that return a SqlExpr (Value Bool) in ToFromT

* escaped use of '@' in TypeApplications in documentation

* Add more specific type signature to `on`

per parsonsmatt review suggestion. Improves type inference significantly.

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

Co-authored-by: charukiewicz <c.charukiewicz@gmail.com>
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
2020-03-29 10:40:49 -06:00
Ben Levy
9a762e9f20
Update (^.) to fix natural key handling (#177)
* Update (^.) to only treat natural keys with more than one component as ECompositeKey. Fixes #176.

* Update article metadata test to ensure the correct response was being returned instead of just check if an exception was thrown

* Add article metadata to cleanDB before deleting all articles to fix foreign key constraint errors

* Bump version number and add changelog entry
2020-03-22 09:30:45 -06:00
Matt Parsons
951bb21c1b
remove upper bounds (#171)
* remove upper bounds

* work with stackage nightly

* Add nightly build
2020-01-24 13:23:26 -07:00
Matt Parsons
3fcc965de7
Group by documentation (#170)
* Group by documentation
2020-01-16 10:03:53 -07:00
Matt Parsons
aded2932e9
Merge pull request #167 from charukiewicz/master
Exposed new SQL string functions added in v3.3.0 and bumped to v3.3.1
2019-12-31 09:39:27 -07:00
charukiewicz
a7435bac06 Exposed new SQL string functions added in v3.3.0 and bumped to v3.3.1 2019-12-12 22:42:26 -06:00
Matt Parsons
c0dd6c70ef
Merge pull request #166 from charukiewicz/master
Add several common SQL string functions
2019-12-12 15:35:15 -08:00
charukiewicz
ca385665dd added several common SQL string functions: UPPER, TRIM, LTRIM, RTRIM, LENGTH, LEFT, RIGHT
Co-authored-by: charukiewicz <c.charukiewicz@gmail.com>
Co-authored-by: belevy <benjaminlevy007@gmail.com>
Co-authored-by: joemalin95 <joemalin95@gmail.com>
2019-12-12 14:15:16 -06:00
Matt Parsons
a94fb6d9a8
Merge pull request #163 from hdgarrood/more-unsafe-sql-function-args
Allow unsafeSqlFunction to take up to 10 args
2019-11-25 08:48:48 -07:00
Matt Parsons
3eb2b181ac
Merge pull request #164 from felixonmars/patch-1
Remove duplicated dependency
2019-11-25 08:48:09 -07:00
Felix Yan
99c1bbc8fe
Remove duplicated dependency 2019-11-24 17:21:54 +08:00
Harry Garrood
0c96ee6af4 update changelog.md for #163 2019-11-21 23:33:55 +00:00
Harry Garrood
d889476bdf Allow unsafeSqlFunction to take up to 10 args
... without needing to nest tuples. Fixes #162
2019-11-21 23:29:09 +00:00
Matt Parsons
04a73ed92d
Merge pull request #161 from bitemyapp/matt/test-on-clause
Fix on clause nesting
2019-10-31 14:38:16 -06:00
Jose Duran
f9f953c89e Add unsafe documentation (#158)
* Add unsafe documentation

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* updated Readme.md

* Update README.md

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* add safety
2019-10-31 14:34:31 -06:00
parsonsmatt
1627feafa3 aha! 2019-10-29 16:54:58 -06:00
parsonsmatt
ae3b96e0f6 cleaner diff 2019-10-29 14:29:27 -06:00
parsonsmatt
f84945fb04 add cabal 2019-10-29 14:26:48 -06:00
parsonsmatt
edc7db8f3f remove debug 2019-10-29 14:26:09 -06:00
parsonsmatt
1ea6e709d2 Merge branch 'master' into matt/test-on-clause 2019-10-29 14:13:27 -06:00
parsonsmatt
0c9b41a87d lord 2019-10-29 14:07:53 -06:00
parsonsmatt
6a8239ac93 Add test cases 2019-10-29 11:50:10 -06:00
Matt Parsons
096a251c39
Add instance of UnsafeSqlFunctionArgument () (#159)
* Add instance of UnsafeSqlFunctionArgument ()

* Use now, clean a warn
2019-10-29 10:03:42 -06:00
parsonsmatt
214f1906da Use now, clean a warn 2019-10-29 08:53:13 -06:00
parsonsmatt
55fec71ed4 Add instance of UnsafeSqlFunctionArgument () 2019-10-29 08:50:51 -06:00
parsonsmatt
c2ecf9c1a4 v3.2.0 2019-10-28 17:26:40 -06:00
Matt Parsons
e0489988c8
sub_select fix #2 (#153)
* Deprecation notice

* Better message, changelog

* thanks @philonous for the typo find!

* Add subSelectCount

* Add subSelectList

* Add subSelectForeign

* Flip the warning back on

* Add subSelect test

* Write tests demonstrating usage

* fix

* sigh
2019-10-28 17:26:09 -06:00
Matt Parsons
91fa258193
Fix the On Clause Ordering issue (#156)
* Add failing test

* Refactor newIdentFor to not have an error case

* annotation for warning

* refactoring

* Expression parser

* holy shit it works

* Add a shitload of tests

* cross join

* Find a failing case

* Account for that one case

* works

* Composability test

* okay now it tests something

* Documentation updates

* Add since, changelog

* fix
2019-10-28 14:06:01 -06:00
parsonsmatt
5c1f0f65fa v3.1.3 2019-10-28 11:58:31 -06:00
Jose Duran
40f7a0ca97 Insert Select With Conflict for postgres (#155)
* add insertSelectWithConflict to allow insert with conflict resolution

* insertSelectWithConflictCount does nothing when no updates given and add tests

* no longer require undefined for insertSelectWithConflict

* Update src/Database/Esqueleto/PostgreSQL.hs

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update src/Database/Esqueleto/PostgreSQL.hs

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update src/Database/Esqueleto/PostgreSQL.hs

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Update src/Database/Esqueleto/PostgreSQL.hs

Co-Authored-By: Matt Parsons <parsonsmatt@gmail.com>

* Move non postgres related functions out of postgres module to internal.

* add entry to changelog
2019-10-28 11:56:34 -06:00
parsonsmatt
7608d716a1 Add pull request template 2019-10-28 10:21:24 -06:00
Matt Parsons
56420e1c34
Merge pull request #157 from tippenein/bmo/associated-join
add associateJoin function
2019-10-25 16:01:40 -06:00
brady.ouren
7b3cb37131 move function and bump version
- moves associateJoin to Database.Esqueleto
- relaxes bounds on containers dep
-
2019-10-25 11:58:54 -07:00
brady.ouren
e94808856f add associateJoin function
this helps avoid N+1 queries
2019-10-23 15:31:15 -07:00
Matt Parsons
53515b868f
Merge pull request #137 from rnons/patch-1
Fix code example of LeftOuterJoin and ?.
2019-10-18 09:04:59 -06:00
parsonsmatt
45f5a2ba6f 3.1.1 2019-10-17 15:06:07 -06:00
Chris Allen
5384ab7bf1
Merge pull request #149 from JoseD92/147-upsert-support
147 upsert support
2019-10-10 10:10:34 -05:00
Jose Duran
9512cbe270 add changelog entry 2019-10-10 09:23:24 -05:00
Jose Duran
5ff34fc8f8 fix build on 8.4 and 8.2 2019-10-09 21:04:14 -05:00
Jose Duran
ced45b0c4e style fix 2019-09-30 15:19:20 -05:00
Jose Duran
ba650748f0 add upsert postgres test 2019-09-30 15:12:15 -05:00
Jose Duran
3ebb31af58 made upsert and upsertby postgres specific 2019-09-30 14:11:39 -05:00
Jose Duran
6acb8f0732 add unique postgres tests 2019-09-30 14:10:41 -05:00
Jose Duran
07d9730dc4 add EsqueletoUpsert class and SqlBackend instance 2019-09-27 11:02:10 -05:00
Chris Allen
4f48df0484
Merge pull request #146 from bitemyapp/bitemyapp/support-time-1.9
Support time 1.9
2019-09-24 10:27:23 -05:00
Chris Allen
b4bfe538f9
Merge pull request #133 from bitemyapp/matt/render-query
Render queries as Text
2019-09-24 10:12:05 -05:00
Chris Allen
9775af6f3c Merge branch 'master' into patch-1 2019-09-24 09:55:19 -05:00
parsonsmatt
30cba15094 Fix test 2019-09-24 08:50:52 -06:00
Chris Allen
a50b55b30a build examples only w/ 8.6 2019-09-24 09:30:50 -05:00