-
v1, Beta 9 Pre-Release
released this
2024-07-29 20:59:59 +00:00 | 10 commits to main since this releaseThis release mostly picks up the updated option/result library. However, the breaking change from beta8 that dropped
getOrThrow()from theOptions returned from this library is no longer an issue; this library update implements the method.Downloads
-
v1, Beta 8 Pre-Release
released this
2024-07-29 00:23:07 +00:00 | 11 commits to main since this releaseBREAKING CHANGE
TheOptionimplementation has been swapped fromPhpOptiontoBitBadger\InspiredByFSharp. There are a few ways to fix syntax errors that may be encountered:- The new library's
Optioninstances have atoPhpOption()method; add that to the end of the option-returning call, and everything should work fine. - The new library's
Optioninstances useget()to obtain the value; these calls will not need to change. - The new library uses
isSome()in place ofisDefined(), andisNone()in place ofisEmpty(). - The new library does not (yet) have
getOrThrow().
FEATURE
DocumentListnow has amapToArray()method; this will map an associative array of key/value pairs from the items in the list. One potential use for this is obtaining a list of IDs and names to generate an HTML<select>element.$lookup = $list->mapToArray(fn($it) => $it->id, fn($it) => $it->name);will generate such an array from aDocumentListinstance, with no requirement to create an intermediate array of documents.Downloads
- The new library's
-
v1, Beta 7 Pre-Release
released this
2024-07-25 01:04:23 +00:00 | 15 commits to main since this releaseIt's
DocumentList's turn in the spotlight.map(callable(TDoc): U)creates a generator which transforms results rather than returning them directly asitems()does.iter(callable(TDoc))iterates the item list without transformations.items()will now throw aDocumentExceptionif it is called after the generator has been consumed.- Finally, there is a section in the documentation dedicated to
DocumentListand its usage.
Downloads
-
v1, Beta 6 Pre-Release
released this
2024-07-22 15:16:08 +00:00 | 17 commits to main since this releaseBREAKING CHANGES:
- Instead of setting
Configuration::$pdoDSN, callConfiguration::useDSN()instead. This allows the library to derive its mode based on the data source name (DSN) being set, rather than waiting for the first time a call is made. - Related to the above, it should no longer be necessary to set the mode directly.
Configuration::$modeis no longer visible.
I debated making these changes with a beta digit release, but they should be targeted to one or two lines in each dependent application, and I was having trouble justifying the (somewhat convoluted) way it currently worked as I was writing the documentation. Speaking of documentation...
DOCUMENTATION IS NOW LIVE! This was a "coming during beta testing" to-do list item, and it has now been accomplished. There is much more detail about how to set up and use the library there.
Downloads
- Instead of setting
-
v1, Beta 5 Pre-Release
released this
2024-07-04 17:18:01 +00:00 | 20 commits to main since this releaseThis fixes a logic flaw in beta 4 around handling empty arrays.
Downloads
-
v1, Beta 4 Pre-Release
released this
2024-07-04 16:12:17 +00:00 | 21 commits to main since this releaseParameters::jsonaccepts either an object or an array for its value. In beta 3, an array was unaware of pjson annotations, so custom serialization functions were not called. In this release, if the document array has one entry, and that entry is an array of objects that supporttoJson()(pjson's serialization function), these will now use the pjson-aware serialization.This change allows an array of custom items to be replaced using
Patchand passing a single key array with these items. Example:Patch::byId('doc_table', 'abc123', ['items' => [$item1, $item2, $item3]]);This also adds the flags passed to the non-pjson
json_encodeoptions to it as well (unescaped slashes and unicode).Downloads
-
v1, Beta 3 Pre-Release
released this
2024-06-29 15:53:39 +00:00 | 22 commits to main since this releaseThis release implement support for pjson-decorated classes. If the class has a
toJsoninstance method, it will be used to serialize the JSON instead ofjson_encode, and if the class has afromJsonStringstatic method, it will be used to deserialize the JSON instead ofjson_decodeandJsonMapper::map. (Both of these are provided by theJsonSerializetrait provided in the pjson project.)The conditional nature of this means that you can choose between pjson or the previous behavior. pjson ignores any field not annotated with
#[Json]; so, while it provides more control (particularly in deserialization), it also levies requirements on the classes which it will handle.Downloads
-
v1, Beta 2 Pre-Release
released this
2024-06-25 14:56:07 +00:00 | 23 commits to main since this releaseFor this release,
Custom::single,Find::byId, andFind::firstBy*now returnOptions rather than a document orfalse. This better represents a successful or unsuccessful document retrieval attempt, and theOptiontype provides things likegetOrElse()andgetOrCall()for handling occasions when the document was not found.Downloads
-
v1, Beta 1 Pre-Release
released this
2024-06-21 13:54:18 +00:00 | 25 commits to main since this releaseThis release implements PostgreSQL support. In addition to the
byIdandbyFieldsfunctions, PosgtreSQL supports JSON containment queries (the@>operator; these queries are very efficient with GIN indexes) and JSON Path match queries (the@?operator; the string combines a JSON Path with a condition, ex.$.field ? (@ > 7)).One consequence of this support is that many more functions throw
DocumentExceptionif the database mode is not set; your IDE may complain more when upgrading from 1.0.0-alpha2. The database mode is derived from the PDO data source name, but it can also be set explicitly viaConfiguration::$modeusing a value from theModeenum.Downloads
-
v1, Alpha 2 Pre-Release
released this
2024-06-11 11:15:39 +00:00 | 26 commits to main since this releaseThis has two overall changes:
byFieldsfunctions now take an optionalFieldMatchenumeration instead of a string;FieldMatch::Allequates toAND, andFieldMatch::Anyequates toOR- IDs can now be generated automatically; information has been added to the README
Downloads