ссылки между конвенциями переписаны на темы и идентификаторы
- 41 ссылка вида `lang/go/logging.md` заменена на «конвенция `logging`», идентификатор правила или «базовый слой» для своей же темы - MIGR-8 больше не отсылает за форматом меток времени, а называет его; MIGR-11 перенёс ссылку на KEYS-1/KEYS-2 из нормы в «Почему»
This commit is contained in:
@@ -119,14 +119,15 @@ down останавливает сразу и заставляет пересо
|
||||
таблицы соответствия, которую пришлось бы держать в голове для числового
|
||||
кода.
|
||||
|
||||
### MIGR-8. Метки времени — `TEXT` в формате из `arch/time.md`
|
||||
### MIGR-8. Метки времени — `TEXT` в каноническом формате
|
||||
|
||||
**ДОЛЖЕН.** Колонка с меткой времени объявляется как `TEXT`, значения
|
||||
пишутся в формате из `arch/time.md`.
|
||||
пишутся как RFC 3339 в UTC с суффиксом `Z` и фиксированной шириной.
|
||||
|
||||
**Почему.** Типа даты в SQLite нет, поэтому единственное, что делает
|
||||
значения сравнимыми, — договорённость о формате. Текст в формате из
|
||||
`arch/time.md` сортируется лексикографически в том же порядке, что и
|
||||
значения сравнимыми, — договорённость о формате; сам формат выбран не
|
||||
здесь, а конвенцией `time` (`TIME-1`, `TIME-2`). Текст в нём сортируется
|
||||
лексикографически в том же порядке, что и
|
||||
хронологически: `ORDER BY` и диапазонные условия работают без функций
|
||||
преобразования, а значит и без потери индекса. Соседство двух форматов в
|
||||
одной колонке ломает и сравнение, и разбор на стороне Go.
|
||||
@@ -159,12 +160,12 @@ down останавливает сразу и заставляет пересо
|
||||
### MIGR-11. Первичный ключ новой таблицы — TEXT ULID
|
||||
|
||||
**ДОЛЖЕН.** Колонка ключа объявляется как `TEXT`, значение приходит из
|
||||
приложения (`KEYS-1`, `KEYS-2`).
|
||||
приложения.
|
||||
|
||||
**Почему.** Здесь конвенция схемы ничего не решает — она реализует решение,
|
||||
принятое в `arch/db-identifiers.md`. Повторить там ветвление или условие
|
||||
значило бы завести второй источник правды, и соседние таблицы разъехались бы
|
||||
по разным ответам на один вопрос.
|
||||
принятое конвенцией `db-identifiers` (`KEYS-1`, `KEYS-2`). Повторить там
|
||||
ветвление или условие значило бы завести второй источник правды, и соседние
|
||||
таблицы разъехались бы по разным ответам на один вопрос.
|
||||
|
||||
`AUTOINCREMENT` в такой таблице невозможен: SQLite разрешает его только на
|
||||
`INTEGER PRIMARY KEY`. То есть для новых таблиц запрещать нечего.
|
||||
@@ -192,9 +193,9 @@ down останавливает сразу и заставляет пересо
|
||||
|
||||
## Связано
|
||||
|
||||
- `arch/time.md` — формат меток времени.
|
||||
- `arch/db-identifiers.md` — выбор первичных ключей.
|
||||
- `lang/go/errors.md` — граничные ошибки `database/sql` транслируются в
|
||||
- конвенция `time` — формат меток времени.
|
||||
- конвенция `db-identifiers` — выбор первичных ключей.
|
||||
- конвенция `errors` — граничные ошибки `database/sql` транслируются в
|
||||
доменные у источника, в слое store.
|
||||
|
||||
<!-- local:связано -->
|
||||
|
||||
Reference in New Issue
Block a user