* stack-8.8.yaml now does GHC 8.8
* support ghc 8.10.4, upgrade to cabal 3.4
* do it
* use stack 8.10 by default, support pers2.13
* sqlite tests are failing???
* build with cabal
* gitignore
* tidy up
* work with persistent-2.13
* giddyup
* keep cabal file in repo
* fixx
* changelog, vbump
* update cache keys
* run mysql tests
* uhhh why are you like this
* stuff
* tests pass locally
* make the example work
* minor bump
* fix gha
* k
* no persistent-template dependency please
* it passed?
* ci nonsense
* uh
* i think that should do it
* ok no really
* i miss file-watch
* sigh
* come on pls
* stylish haskell
* i hate this
* Improve recommended hlints for catching `x = NULL` SQL
The current hints work fine for unqualified imports, but I realized they don't work with qualified ones, such as `import qualified Database.Esqueleto as E`.
I tested on our codebase that these with the `Database.Esqueleto.` addition to `hlint.yaml`, this now works in unqualified and qualified code
* Update changelog.md
* Also export ValidOnClauseValue
This is a constraint on `on`, but not exported, so you have to go into the source to see what it does. Exporting makes this easier.
* add to ChangeLog and bumped version
* Simplify ToFromT. Converted most closed type families to be associated type families with the exception of IsLateral, Nullable and the two new FromOnClause and FromCrossJoin type families that handle the overlaps instead of ToFromT
* Make ToAliasT and ToAliasReferenceT associated types of the corresponding classes
* Update changelog
* Remove ToAliasT and ToAliasReferenceT
* Update changelog and deprecate type families instead of deleting them
* Apply suggestions from code review
Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
Co-authored-by: Ben Levy <benjaminlevy007@gmail.com>
* Initial attempt at Lateral joins
* Fix lateral queries for Inner and Left joins. Remove for Full and Right as this is apparently illegal(who knew). Add TypeError on Full and Right joins. Update on clause to use a custom constraint instead of relying on ToFrom.
* Fix typo leading to erroneous ToFrom instance
* Implement non-recursive CTE's
* add withRecursive; cleanup whitespace
* Fix multiple recursive CTEs. Apparently the spec just wants RECURSIVE if any of the queries are recursive.
* Add test to verify that a CTE can reference a previously defined CTE
* Update with/Recursive to return an element of a from clause to allow for joins against CTEs
* Modify set operations to use a custom data type + typeclass + typefamily to allow direct use of SqlQuery a in set operation and to allow recursive cte's to unify syntax with SqlSetOperation. Added lowercase names for set operations. If we can migrate off the constructor names we may be able to simplify the implementation.
* Fixed haddock documentation issue from v3.3.4.0 and added documentation
for new features introduced by v3.4.0.0
* fixed comments that were changed while debugging haddock build
* Cleanup formatting in From per PR. Cleanup ValidOnClause, added documentation and reduced the number of instances
* Update src/Database/Esqueleto/Experimental.hs
Co-authored-by: charukiewicz <charukiewicz@protonmail.com>
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* Fix issue with extra characters. Extra parens in valueList caused issues in mysql. Extra backticks in value reference names
* update changelog and bump version number
* Fix issue caused by toAliasReference failing to reindex an alias reference by its new alias source
* Add support for SqlExpr (Maybe (Entity a))) to aliasing in Experimental. Fix#193
* Update changelog with new PR name. Fix name shadowing in test.
* Fix binary operations(i.e. ==.) on aliased values.
* no need for version bump since 3.3.3.3 hasnt been released yet
Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
* 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
* 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