using Sonex.Data.Database; namespace Sonex.Data.Records; public sealed class DepartmentRecord { public long Id { get; set; } public string Name { get; set; } = string.Empty; public string Symbol { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public static Task> Get(long id) { return DB.QuerySingleAsync( """ SELECT id, name, symbol, description FROM sonex.departments WHERE id = @id LIMIT 1; """, new { id }); } public static Task> GetAll() { return DB.QueryListAsync( """ SELECT id, name, symbol, description FROM sonex.departments ORDER BY name ASC, symbol ASC; """); } public static Task> Create( string name, string symbol, string description) { return DB.QuerySingleAsync( """ INSERT INTO sonex.departments (name, symbol, description) VALUES (@name, @symbol, @description) RETURNING id; """, new { name, symbol, description }); } public async Task> Save() { var result = await DB.QuerySingleAsync( """ UPDATE sonex.departments SET name = @Name, symbol = @Symbol, description = @Description, updated_at = NOW() WHERE id = @Id RETURNING TRUE; """, new { Id, Name, Symbol, Description }).ConfigureAwait(false); return result; } public Task> Delete() { return DB.QuerySingleAsync( """ DELETE FROM sonex.departments WHERE id = @Id RETURNING TRUE; """, new { Id }); } }