chore(release): 4.1.0
# [4.1.0](v4.0.0...v4.1.0) (2025-05-06) ### Bug Fixes * Add columns to group by for module search for tables that are included in the select ([96a531e4](96a531e4)), closes [#562](#562) * Cast action enum to a string to fix ordering of action in audit ([e81fd5e2](e81fd5e2)), closes [#562](#562) * **db:** Fix enum migrations for Postgres ([2354fb33](2354fb33)), closes [#562](#562) * **db:** Handle constraints not existing (by checking if they exist) ([60e7d113](60e7d113)), closes [#562](#562) * **db:** Mark all 'id' columns as incremental, ensuring that incrementing IDs are used in Postgres ([ccba6962](ccba6962)), closes [#562](#562) * Ensure audit action column is cast where performing string comparison ([48149fcd](48149fcd)), closes [#562](#562) * Fix enum creation for Postgres, as the Enum must be created beforehand ([e5b4d541](e5b4d541)), closes [#562](#562) * Fix non-consistent ordering of results in Postgresl in search when relevant scores are the same. ([58086a5f](58086a5f)), closes [#562](#562) * Fix provider search base query to include all columns in WHERE clause in the GROUP BY clause ([0eba7dc8](0eba7dc8)), closes [#562](#562) * Fix sql query, where table is being selected, which treats first argument as a where clause, resulting in the column being added to "WHERE" without an operator. ([c787ab1b](c787ab1b)), closes [#562](#562) * Handle differences in true/false values in Postgres for DB migration scripts ([180cdaa6](180cdaa6)), closes [#562](#562) * Handle git_provider_id being an empty string and do not treat as a set value in create module provider endpoint ([8387d663](8387d663)), closes [#562](#562) * Include all selected fields that are grouped by in analytics base and module usage count queries ([a31e8d1e](a31e8d1e)), closes [#562](#562) * Include ID column in analytics query, as this is used in the group_by, meaning it must be included in the selected fields, otherwise Postgres will throw an error ([8878ff63](8878ff63)), closes [#562](#562) * Lower-case all remaining non-timestamp fields when ordering audit data. Update tests to expect the fact that the engines still don't match. ([2231ba73](2231ba73)), closes [#562](#562) * Only attempt to resolve GitRepository when updating module provider if the git provider ID is non-empty ([376bf6a4](376bf6a4)), closes [#562](#562) * Order rows returned for prometheus metrics ([fc3c1db0](fc3c1db0)), closes [#562](#562) * Perform lower-case comparison of username in audit filtering ([43cf6966](43cf6966)), closes [#562](#562) * Replace use of `lastrowid` with `inserted_primary_key` when obtaining primary key values of inserted rows. ([bc001856](bc001856)), closes [#562](#562) * Update DB migrations to use LargeBinary as variant to "blob" for Postgresql as blob is not available for Postgresql ([01739087](01739087)), closes [#562](#562) ### Features * Add package for postgresql connector ([74c792c3](74c792c3)), closes [#562](#562) * **database:** Add support for Postgres server ([1197088b](1197088b)), closes [#562](#562)