* Document isNothing
I have two goals with this documentation:
1. Surface how to do `IS NOT NULL`. This PR makes a search for that string turn up a result, and directs you to combine `isNothing` with `not_`.
2. Documents a major gotcha where behavior between Persistent and Esqueleto is different. I haven't tested this in awhile, but we run into this gotcha occassionally, so I'm pretty confident it's still an issue.
* ..
* ..
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* Test and further document ToBaseId
My coworker Lev was adding this typeclass to our codebase and we hadn't used it before. I added a little more documentation that I think would help clarify things, particularly what the point of the witness function was. More importantly I added a test for this typeclass.
* 3.3.3.2
* 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>
* 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
* 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
* 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
* Update between so it works with SQL values
* Add support for composite keys in between clause
* Remove unused values from ERaw in construct
* Update unsafeSqlBinOp to handle composite keys and between to use >=., <=. and &&.
* Support composite keys in unsafeSqlBinOp correctly
* Updated changelog
* Update version number of between to 3.1.0
* added PostgreSQL.JSON module
* finished adding all JSON operators
* cleanup
* half way through writing tests
* final tweaks to comments
* finished with JSON tests
* upped persistent dependency to 2.10.0 because of PersistArray data constructor addition needed for JSON operators
* noticed the minus operator with text[] as right operand was only added in PSQL v10, added function and adjusted types/tests
* adjusted yaml configs for updated dependencies and PSQL v10 in Travis
* try to get PostgreSQL 10 running
* use @since notation
* removed postgresql from 'services' field
* and one more time, with FEELING! (and postgresql-10)
* foo
* PSQL 10 runs on 5433, it seems? reverting .travis.yml changes and setting test conn to port 5433
* of course I forget to add the PORT env > .<
* doop-dee-doo
* herp-a-derp
* last commit (hopefully)
* also have more recent dependencies in the 'compiler should error' tests
* why does it feel like this'll go on for a while still?
* copied some extra-deps from the persistent ymls
* aaaaand we're done... right?
* added persistent-postgresql to the dependencies and used its instances for Aeson.Value
* small comment fix
* moved the instances to their own module, this way they're optional to use if you don't use persistent-postgresql
* use port 5432, like a normal PostgreSQL!
* added JSONB newtype with instances, instead of orphaning Aeson.Value
* reworked everything to use the JSONB newtype. And adjusted most comments to reflect the change
* fixed all the tests (just making it compile again)
* that's right, Travis' PSQL v10 NEEEEDS it to be port 5433... for some reason
* update on the haddockumentation
* added JSONAccessor data type for easier usage of certain operators
* Also add to changelog.md
* JSONExpr -> JSONBExpr
* this damn PGPORT is really irritating
Aggregate functions like array_agg and string_agg will return NULL instead of
empty arrays and empty strings resp. when run on zero rows. This change reflects
that in the haskell types. It also adds a "maybeArray" function that
coalesces NULL into an empty array, because currently there is no way to write
an empty array literal (`val []` does not work)