All notable changes to this project will be documented in this file. Please add new changes to the top.
date format is [yyyy-mm-dd]
- Update dependencies and improve readme.
- Imperative transactions have to be closed manually.
- Ensure own connection is always released even if exception occurs.
- Correct issue when empty or null list is passed to
insertMany
operations.
- Ensure the connection is auto-released after
commit
orrollback
runs. - Update dependencies.
- Fix projection of
@OneToMany
field when the 'one' side produces empty result. - Update dependencies.
- Add nukak-maku logo.
- Update dependencies (functionality keeps the same in this release).
- Automatically release the querier unless it is inside a current transaction.
- Remove unnecessary wrapper for transactions from
AbstractQuerierPool
class.
- Improve typings of first inserted ID.
- Return the inserted IDs in the response of the queriers'
run
function.
- Fix an issue related to the
$where
condition of selected relations missed in the final criteria for@OneToMany
and@ManyToMany
relationships.
- Add support for
json
andjsonb
fields. Automatically parse the JSON values when persisting withJSON.parse
function. - Improve type-safety in general.
- Move
getPersistables
inside dialect for higher reusability. - Add support for
vector
fields.
- Add support for
raw
in values (previously, it was only supported by$select
and$where
operators). Allows safe use of any SQL query/clause as the value in an insert or update operation that shouldn't be automatically escaped by the ORM.
- Add support for
upsert
operations. - Migrate SQLite package driver from
sqlite3
tobetter-sqlite3
for better performance. - Make Maria package to use the
RETURNING id
clause to get the inserted IDs.
- Rename
$project
operator to$select
for consistency with most established frameworks so far. - Rename
$filter
operator to$where
for consistency with most established frameworks so far.
- Allow to set a field as non-eager (i.e. lazy) with
eager: false
(by default fields areeager: true
). - Allow to set a field as non-updatable (i.e. insertable and read-only) with
updatable: false
(by default fields areupdatable: true
).
- Move project inside query parameter #63
- Update usage example in the README.md.
- Improve usage examples in the README.md, and make the overview section more concise.
- Remove
$group
and$having
as they detriment type safety as currently implemented (support may be redesigned later if required). - Improve type safety of
$project
operator. - Improve type safety of
$filter
operator. - Remove projection operators (
$count
,$min
,$max
,$min
, and$sum
) as they detriment type safety as currently implemented. This can be done via Virtual fields instead as currently supported for better type safety.
-
Add support for
transaction
operations using a QuerierPool. Automatically wraps the code of the callback inside a transaction, and auto-releases the querier after running. -
Update dependencies.
const ids = await querierPool.transaction(async (querier) => { const data = await querier.findMany(...); const ids = await querier.insertMany(...); return ids; });
-
fix(nukak-browser): check if ids are returned before use $in to delete them.
-
Reuse community open-source npm packages to escape literal-values according to each DB vendor.
-
Move projection to a new parameter to improve type inference of the results.
-
Support dynamic operations while projecting fields, and move
$project
as an independent parameter in thefind*
functions #55.