public static void Main()
var sql = GetAddToArrayQuery("person", "permissions", "id");
public static string GetAddToArrayQuery(string tablename, string arrayFieldName, params string[] keys)
var keyfieldnames = string.Join(',', keys);
var keyvaluenames = string.Join(',', keys.Select(x => "@" + x));
$"INSERT INTO ${tablename}({keyfieldnames},{arrayFieldName}) " +
$"VALUES({keyfieldnames},@{arrayFieldName}) " +
$"ON CONFLICT({keyfieldnames}) DO UPDATE " +
$"SET {arrayFieldName} = array(select distinct v from unnest({tablename}.{arrayFieldName} || @{arrayFieldName}) v";