immich/server/src/sql-tools/readers/comment.reader.ts
2025-07-08 08:17:40 -04:00

37 lines
1.0 KiB
TypeScript

import { Reader } from 'src/sql-tools/types';
export const readComments: Reader = async (ctx, db) => {
const comments = await db
.selectFrom('pg_description as d')
.innerJoin('pg_class as c', 'd.objoid', 'c.oid')
.leftJoin('pg_attribute as a', (join) =>
join.onRef('a.attrelid', '=', 'c.oid').onRef('a.attnum', '=', 'd.objsubid'),
)
.select([
'c.relname as object_name',
'c.relkind as object_type',
'd.description as value',
'a.attname as column_name',
])
.where('d.description', 'is not', null)
.orderBy('object_type')
.orderBy('object_name')
.execute();
for (const comment of comments) {
if (comment.object_type === 'r') {
const table = ctx.getTableByName(comment.object_name);
if (!table) {
continue;
}
if (comment.column_name) {
const column = table.columns.find(({ name }) => name === comment.column_name);
if (column) {
column.comment = comment.value;
}
}
}
}
};