diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 94f61db8..1120ab9e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,37 @@ Change history ============== +3.4.0 (2025-10-28) +------------------ + +.. warning:: + + This version contains a data migration which denormalizes the ``object_type`` on the ObjectRecord + model to make queries more performant, by avoiding additional JOINs. + + This data migration can take around **40 minutes to 1.5 hours**, dependent + on the amount of ObjectRecords in the database. It was tested on a dataset of 3.8 million + ObjectRecords, for which this migration took 45 minutes. This data migration does handle newly + created ObjectRecords if the Objects API is still running simultaneously. + + If the Objects API is still running while this migration is applied and if there is + always a constant influx of created ObjectRecords, this migration could theoretically + keep running indefinitely, or there could be a small window (if the data migration does finish) + where the ``NOT NULL`` constraint is not yet applied and ``NULL`` values are being inserted, + causing errors. Although this is unlikely, if your instance is at risk for this, + it could be safer to take the Objects API offline before migrating to avoid this. + +**Performance optimizations** + +* [#677] Denormalize ``ObjectRecord`` by adding ``_object_type`` to avoid additional JOINs in queries. + This improves performance for read operations via the API. + +**Project maintenance** + +* [:open-api-framework:`163`] Integrate django-common to make uses of shared views/templates +* [:objects-api:`663`] Upload performance tests results to bencher +* [:open-api-workflows:`30`] Run API Design Rules linter on OpenAPI specification in CI + 3.3.1 (2025-10-16) ------------------ diff --git a/README.NL.rst b/README.NL.rst index f82217f5..649b30fa 100644 --- a/README.NL.rst +++ b/README.NL.rst @@ -2,7 +2,7 @@ Objecten API ============ -:Version: 3.3.1 +:Version: 3.4.0 :Source: https://github.com/maykinmedia/objecttypes-api :Keywords: objecten, assets, zaakobjecten @@ -38,7 +38,13 @@ Applicatie versie Release datum API specificatie ================= ============== ============================= latest n/a `ReDoc `_, `Swagger `_, - (`verschillen `_) + (`verschillen `_) +3.4.0 2025-10-28 `ReDoc `_, + `Swagger `_ + (`verschillen `_) +3.3.1 2025-10-16 `ReDoc `_, + `Swagger `_ + (`verschillen `_) 3.3.0 2025-10-02 `ReDoc `_, `Swagger `_ (`verschillen `_) diff --git a/README.rst b/README.rst index 4419e76f..5a6701a6 100644 --- a/README.rst +++ b/README.rst @@ -2,7 +2,7 @@ Objects API =========== -:Version: 3.3.1 +:Version: 3.4.0 :Source: https://github.com/maykinmedia/objects-api :Keywords: objects, assets, zaakobjecten @@ -36,7 +36,13 @@ Application version Release date API specification =================== ============== ============================= latest n/a `ReDoc `_, `Swagger `_, - (`diff `_) + (`diff `_) +3.4.0 2025-10-28 `ReDoc `_, + `Swagger `_ + (`diff `_) +3.3.1 2025-10-16 `ReDoc `_, + `Swagger `_ + (`diff `_) 3.3.0 2025-10-02 `ReDoc `_, `Swagger `_ (`diff `_) diff --git a/docs/api/index.rst b/docs/api/index.rst index ffb55670..64eb677a 100644 --- a/docs/api/index.rst +++ b/docs/api/index.rst @@ -14,9 +14,9 @@ API Specification version(s) `Redoc `__, `Swagger `__ ) -`Objects API`_ 2.4.4 ( - `Redoc `__, - `Swagger `__ +`Objects API`_ 2.5.0 ( + `Redoc `__, + `Swagger `__ ) ====================== ========================================== diff --git a/docs/conf.py b/docs/conf.py index aac29dc6..b9d86e97 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -123,6 +123,10 @@ "https://github.com/maykinmedia/open-api-framework/issues/%s", "#%s", ), + "open-api-workflows": ( + "https://github.com/maykinmedia/open-api-workflows/issues/%s", + "#%s", + ), "charts": ( "https://github.com/maykinmedia/charts/issues/%s", "#%s", diff --git a/package-lock.json b/package-lock.json index 4b57673a..5897fbdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "objects", - "version": "3.3.1", + "version": "3.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "objects", - "version": "3.3.1", + "version": "3.4.0", "license": "UNLICENSED", "dependencies": { "@fortawesome/fontawesome-free": "^7.0.0", diff --git a/package.json b/package.json index 0c0a3430..2b5611af 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objects", - "version": "3.3.1", + "version": "3.4.0", "description": "objects project", "main": "src/objects/static/bundles/objects-js.js", "directories": { diff --git a/publiccode.yaml b/publiccode.yaml index 3048bb08..860129e4 100644 --- a/publiccode.yaml +++ b/publiccode.yaml @@ -7,8 +7,8 @@ publiccodeYmlVersion: '0.2' name: Objects API url: 'http://github.com/maykinmedia/objects-api.git' softwareType: standalone/backend -softwareVersion: 3.3.1 -releaseDate: '2025-10-16' +softwareVersion: 3.4.0 +releaseDate: '2025-10-28' logo: 'https://github.com/maykinmedia/objects-api/blob/master/docs/logo.png' platforms: - web diff --git a/pyproject.toml b/pyproject.toml index ed107970..32dfd4c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ requires-python = "== 3.12" [tool.bumpversion] commit = false tag = false -current_version = "3.3.1" +current_version = "3.4.0" pre_commit_hooks = [ "npm i", # ensure that package-lock.json is updated ] diff --git a/requirements/dev.txt b/requirements/dev.txt index 5a13112e..91121c87 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -595,7 +595,7 @@ phonenumberslite==8.13.30 # -c requirements/ci.txt # -r requirements/ci.txt # django-two-factor-auth -pip==25.2 +pip==25.3 # via pip-tools pip-tools==7.4.1 # via -r requirements/dev.in diff --git a/src/objects/__init__.py b/src/objects/__init__.py index 7f18287a..9bd20bfc 100644 --- a/src/objects/__init__.py +++ b/src/objects/__init__.py @@ -1,6 +1,6 @@ from .celery import app as celery_app __all__ = ("celery_app",) -__version__ = "3.3.1" +__version__ = "3.4.0" __author__ = "Maykin Media" __homepage__ = "https://github.com/maykinmedia/objects-api" diff --git a/src/objects/api/v2/openapi.yaml b/src/objects/api/v2/openapi.yaml index 9fa5fee9..a135c907 100644 --- a/src/objects/api/v2/openapi.yaml +++ b/src/objects/api/v2/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: Objects API - version: 2.4.4 + version: 2.5.0 description: | An API to manage Objects. diff --git a/src/objects/conf/api.py b/src/objects/conf/api.py index 02301ce9..345f440f 100644 --- a/src/objects/conf/api.py +++ b/src/objects/conf/api.py @@ -1,4 +1,4 @@ -API_VERSION = "2.4.4" +API_VERSION = "2.5.0" # api settings REST_FRAMEWORK = {