fix: don't delete rows from messages table when the associated member is deleted

This commit is contained in:
spiral
2022-01-11 09:43:55 -05:00
parent 54830fd264
commit 34df19c551
9 changed files with 51 additions and 27 deletions

View File

@@ -0,0 +1,10 @@
-- schema version 24
-- don't drop message rows when system/member are deleted
alter table messages alter column member drop not null;
alter table messages drop contstraint messages_member_fkey;
alter table messages
add constraint messages_member_fkey
foreign key (member) references members(id) on delete set null;
update info set schema_version = 24;

View File

@@ -29,9 +29,13 @@ public partial class ModelRepository
FullMessage Mapper(PKMessage msg, PKMember member, PKSystem system) =>
new() { Message = msg, System = system, Member = member };
var query = "select * from messages"
+ " left join members on messages.member = members.id"
+ " left join systems on members.system = systems.id"
+ " where (mid = @Id or original_mid = @Id)";
var result = await conn.QueryAsync<PKMessage, PKMember, PKSystem, FullMessage>(
"select messages.*, members.*, systems.* from messages, members, systems where (mid = @Id or original_mid = @Id) and messages.member = members.id and systems.id = members.system",
Mapper, new { Id = id });
query, Mapper, new { Id = id });
return result.FirstOrDefault();
}