Python файлы: - handler.py → sql_runner.py (entrypoint: sql_runner.handle) - handler.py → notes_crud.py (entrypoint: notes_crud.handle) - handler.py → notes_list.py (entrypoint: notes_list.handle) TF ресурсы переименованы: - sless_function.notes → sless_function.notes_crud - sless_trigger.notes_http → sless_trigger.notes_crud_http - sless_job.create_table → sless_job.notes_table_init - sless_job.create_index → sless_job.notes_index_init - archive_file.notes → archive_file.notes_crud_zip - archive_file.sql_runner → archive_file.sql_runner_zip - archive_file.notes_list → archive_file.notes_list_zip Добавлены подробные комментарии во все .tf файлы
47 lines
2.0 KiB
HCL
47 lines
2.0 KiB
HCL
# 2026-03-09
|
|
# init.tf — однократная инициализация схемы БД через sless_job.
|
|
#
|
|
# Джобы запускаются один раз при terraform apply и ждут завершения.
|
|
# Использует функцию sql_runner (без HTTP-триггера) для безопасного DDL.
|
|
#
|
|
# Порядок выполнения гарантирован через depends_on:
|
|
# 1. notes_table_init — создаём таблицу
|
|
# 2. notes_index_init — создаём индекс (требует таблицу)
|
|
#
|
|
# Для повторного запуска (например, после DROP TABLE) — увеличь run_id.
|
|
# run_id отслеживается в state: при изменении terraform перезапустит джоб.
|
|
|
|
# Джоб создания таблицы notes.
|
|
# CREATE TABLE IF NOT EXISTS — безопасно запускать повторно, таблица не пересоздаётся.
|
|
resource "sless_job" "notes_table_init" {
|
|
namespace = "default"
|
|
name = "notes-create-table"
|
|
function = sless_function.sql_runner.name
|
|
wait_timeout_sec = 120
|
|
run_id = 1
|
|
|
|
event_json = jsonencode({
|
|
statements = [
|
|
"CREATE TABLE IF NOT EXISTS notes (id serial PRIMARY KEY, title text NOT NULL, body text, created_at timestamp DEFAULT now())"
|
|
]
|
|
})
|
|
}
|
|
|
|
# Джоб создания индекса для сортировки по дате.
|
|
# depends_on гарантирует, что таблица уже создана до создания индекса.
|
|
resource "sless_job" "notes_index_init" {
|
|
depends_on = [sless_job.notes_table_init]
|
|
|
|
namespace = "default"
|
|
name = "notes-create-index"
|
|
function = sless_function.sql_runner.name
|
|
wait_timeout_sec = 60
|
|
run_id = 1
|
|
|
|
event_json = jsonencode({
|
|
statements = [
|
|
"CREATE INDEX IF NOT EXISTS notes_created_idx ON notes(created_at DESC)"
|
|
]
|
|
})
|
|
}
|