Проект ACIS: содержание, old manual.
Для хранения подробностей имени человека в записях типа "person",
мы используем ветку name с ключами:
first,
last,
middle,
suffix,
full,
latin,
variations.
Пользователь напрямую вводит в запись первое, среднее, и
последнее имена (а так же, суффикс). Если это делает новый
пользователь (на экране new-user/initial, то мы
комбинируем эту информацию и формируем список вариаций имени. На
экране new-user/additional мы предлагаем пользователю
просмотреть и отредактировать этот список.
В случае зарегистрированного пользователя, и все подробности
имени, и список вариаций редактируется на экране
personal-data, однако есть подозрение, что лучше будет
вынести это всё на отдельный экран names.
Отредактированный пользователем список вариаций мы сохраняем в
name/additional-variations. Превращаем список в набор
(set), добавляем в набор name/full и
name/latin (если определены). Сохраняем набор в виде
списка, отсортированного по длине элементов в убывающем порядке в
name/variations.
Дополнительно, сравниваем получившийся набор с предыдущим
значением name/variations. Если существуют отличия, то
мы пишем в name/last-change-date.
Мы так же обновляем name/last-change-date в случае, если
пользователь обновил любой из: name/first,
name/last,
name/middle,
name/suffix,
name/latin,
name/full.
name/last-change-date содержит дату в виду seconds
since the epoch — целого числа в секундах с начала эпохи.