feat(lagoon): per-query collation for OrderBy, drop the database locale check
- lagoon.OrderBy takes variadic lagoon.OrderOption values; lagoon.Collate(name) emits a validated, double-quoted COLLATE clause (e.g. "pl-x-icu") - remove the exported CheckLocale and the ICU pl-PL check from Open and Use - framework test containers and per-test databases are plain PostgreSQL - lagoon README, root README and docs pages drop the locale requirement; queries-and-pagination gains a "Sorting with a collation" section backed by ExampleCollate
This commit is contained in:
@@ -12,7 +12,7 @@ SummerCMS is a content management framework for Go, inspired by WinterCMS. An ap
|
||||
## Requirements
|
||||
|
||||
- Go 1.27.
|
||||
- PostgreSQL 16 for any application that uses the data layer ([lagoon](modules/lagoon/README.md)). lagoon currently requires the database's default locale to be ICU `pl-PL`; see [Known issues](#known-issues).
|
||||
- PostgreSQL 16 for any application that uses the data layer ([lagoon](modules/lagoon/README.md)).
|
||||
- Node.js 22.6 or newer, only when working on the admin SPA in `admin/`.
|
||||
- Docker, only for the integration tests that start PostgreSQL or Mailpit containers through testcontainers-go.
|
||||
|
||||
@@ -32,10 +32,10 @@ summer build # generates plugins.gen.go and main.go, writes bin/hello
|
||||
|
||||
The `migrate`, `migrate:status`, `migrate:rollback`, `serve` and admin commands open PostgreSQL, so they need more configuration. Configuration comes from YAML files in `config/`, and any key can be overridden with a `SUMMER_`-prefixed environment variable in which a double underscore separates path segments (see [compass](modules/compass/README.md)):
|
||||
|
||||
1. Create a PostgreSQL 16 database with the locale lagoon checks for:
|
||||
1. Create a PostgreSQL 16 database:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE hello TEMPLATE template0 ENCODING 'UTF8' LOCALE_PROVIDER icu ICU_LOCALE 'pl-PL';
|
||||
CREATE DATABASE hello;
|
||||
```
|
||||
|
||||
2. Add the request body limits that `serve` and `route:list` require. The example does not ship them yet, and surf needs numeric values, which the string-valued environment overlay cannot supply. Create `config/http.yaml` in `examples/hello`:
|
||||
@@ -64,7 +64,6 @@ The `migrate`, `migrate:status`, `migrate:rollback`, `serve` and admin commands
|
||||
### Known issues
|
||||
|
||||
- `examples/hello` has no `http.body_limits` configuration, so `serve` and `route:list` fail with `surf: config http.body_limits.default_bytes is required` until you add it as in step 2. The same gap makes the example's `TestTypedItemRoute` fail.
|
||||
- lagoon refuses any database whose default locale is not ICU `pl-PL`.
|
||||
- The committed `examples/hello/main.go` is older than what `summer build` generates now, so building the example (or running its tests, which build it) leaves that file modified. Restore it with `git checkout -- examples/hello/main.go` if you do not intend to commit it.
|
||||
|
||||
## Repository layout
|
||||
|
||||
Reference in New Issue
Block a user