С миграциями все просто. Можно просто писать sql файлы и их выполнять попутно заипсывая в таблицу с выполненными.
Либо можно слегка усложнить задачу и написать штуку, которая будет поочередно запускать файлы из нужной директории.
В самих файлах - 2 функции up и down, в которые передается коннекшн (чтобы не поднимать его по 100 раз).
Для себя писал вот такую штуку, но для монги.
https://github.com/SkeLLLa/yammy/blob/master/src/index.tsНо по сути написать такое же для постгреса будет даже проще.