From 4583ab28ed5d08e91b2080164e9282d8074d169a Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Mon, 19 Dec 2022 19:13:45 +0100 Subject: [PATCH] add primary keys definition to migration rules --- winixd/models/group.cpp | 12 +++++++++++- winixd/models/group.h | 6 +++--- winixd/models/item.cpp | 12 ++++++++++++ winixd/models/item.h | 5 +++-- winixd/models/itemcontent.cpp | 10 +++++++++- winixd/models/itemcontent.h | 5 +++-- winixd/models/user.cpp | 12 ++++++++++++ winixd/models/user.h | 6 +++--- 8 files changed, 56 insertions(+), 12 deletions(-) diff --git a/winixd/models/group.cpp b/winixd/models/group.cpp index 28b536e..2d6fef9 100644 --- a/winixd/models/group.cpp +++ b/winixd/models/group.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2021, Tomasz Sowa + * Copyright (c) 2021-2022, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -81,6 +81,7 @@ bool Group::do_migration(int & current_table_version) ok = ok && morm::Model::do_migration(current_table_version, 1, this, &Group::do_migration_to_1); ok = ok && morm::Model::do_migration(current_table_version, 2, this, &Group::do_migration_to_2); + ok = ok && morm::Model::do_migration(current_table_version, 3, this, &Group::do_migration_to_3); return ok; } @@ -110,6 +111,15 @@ bool Group::do_migration_to_2() } +bool Group::do_migration_to_3() +{ + const char * str[] = { + "ALTER TABLE core.\"group\" ADD CONSTRAINT group_pkey PRIMARY KEY (id);", + }; + + size_t len = sizeof(str) / sizeof(const char*); + return db_query(str, len); +} } diff --git a/winixd/models/group.h b/winixd/models/group.h index 1ccdff1..d5cb4f7 100644 --- a/winixd/models/group.h +++ b/winixd/models/group.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2021, Tomasz Sowa + * Copyright (c) 2008-2022, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -61,14 +61,14 @@ public: void Clear(); - bool do_migration(int & current_table_version); protected: + bool do_migration(int & current_table_version); bool do_migration_to_1(); bool do_migration_to_2(); - + bool do_migration_to_3(); }; diff --git a/winixd/models/item.cpp b/winixd/models/item.cpp index bd4ca44..81b8641 100644 --- a/winixd/models/item.cpp +++ b/winixd/models/item.cpp @@ -199,6 +199,7 @@ bool Item::do_migration(int & current_table_version) ok = ok && morm::Model::do_migration(current_table_version, 2, this, &Item::do_migration_to_2); ok = ok && morm::Model::do_migration(current_table_version, 3, this, &Item::do_migration_to_3); ok = ok && morm::Model::do_migration(current_table_version, 4, this, &Item::do_migration_to_4); + ok = ok && morm::Model::do_migration(current_table_version, 5, this, &Item::do_migration_to_5); return ok; } @@ -313,6 +314,17 @@ bool Item::do_migration_to_4() } +bool Item::do_migration_to_5() +{ + const char * str[] = { + "ALTER TABLE core.item ADD CONSTRAINT item_pkey PRIMARY KEY (id);", + }; + + size_t len = sizeof(str) / sizeof(const char*); + return db_query(str, len); +} + + bool Item::can_remove_child(const User * current_user, long child_user_id) const { diff --git a/winixd/models/item.h b/winixd/models/item.h index b6c6c9e..ddaea8a 100644 --- a/winixd/models/item.h +++ b/winixd/models/item.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2021, Tomasz Sowa + * Copyright (c) 2008-2022, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -174,7 +174,6 @@ public: */ - bool do_migration(int & current_table_version); void propagate_connector(); @@ -203,10 +202,12 @@ protected: CalcItemsHelper calc_items_by_url(long parent_id, const std::wstring & url); + bool do_migration(int & current_table_version); bool do_migration_to_1(); bool do_migration_to_2(); bool do_migration_to_3(); bool do_migration_to_4(); + bool do_migration_to_5(); void print_dir(EzcEnv & env); void print_dir_without_slash(EzcEnv & env); diff --git a/winixd/models/itemcontent.cpp b/winixd/models/itemcontent.cpp index a61a3d2..4412d44 100644 --- a/winixd/models/itemcontent.cpp +++ b/winixd/models/itemcontent.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2021, Tomasz Sowa + * Copyright (c) 2021-2022, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -196,6 +196,7 @@ bool ItemContent::do_migration(int & current_table_version) ok = ok && morm::Model::do_migration(current_table_version, 3, this, &ItemContent::do_migration_to_3); ok = ok && morm::Model::do_migration(current_table_version, 4, this, &ItemContent::do_migration_to_4); ok = ok && morm::Model::do_migration(current_table_version, 5, this, &ItemContent::do_migration_to_5); + ok = ok && morm::Model::do_migration(current_table_version, 6, this, &ItemContent::do_migration_to_6); return ok; } @@ -289,6 +290,13 @@ bool ItemContent::do_migration_to_5() } +bool ItemContent::do_migration_to_6() +{ + const char * str = "ALTER TABLE core.content ADD CONSTRAINT content_pkey PRIMARY KEY (id);"; + return db_query(str); +} + + bool ItemContent::has_access(const User * current_user, int mask) const { if( current_user ) diff --git a/winixd/models/itemcontent.h b/winixd/models/itemcontent.h index de08677..5d6cf97 100644 --- a/winixd/models/itemcontent.h +++ b/winixd/models/itemcontent.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2021, Tomasz Sowa + * Copyright (c) 2021-2022, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -273,7 +273,6 @@ public: * what about clear() from Model? */ void Clear(); - bool do_migration(int & current_table_version); static bool CanContentBeHtmlFiltered(ItemContent::ContentType ct); static void print_content(HtmlTextStream & out, const pt::WTextStream & content, ItemContent::ContentType content_type, bool is_html_filter_on); @@ -312,11 +311,13 @@ public: protected: + bool do_migration(int & current_table_version); bool do_migration_to_1(); bool do_migration_to_2(); bool do_migration_to_3(); bool do_migration_to_4(); bool do_migration_to_5(); + bool do_migration_to_6(); bool has_access(const User * current_user, int mask) const; bool content_type_is(const std::wstring & type); diff --git a/winixd/models/user.cpp b/winixd/models/user.cpp index fb2b041..6976327 100644 --- a/winixd/models/user.cpp +++ b/winixd/models/user.cpp @@ -150,6 +150,7 @@ bool User::do_migration(int & current_table_version) ok = ok && morm::Model::do_migration(current_table_version, 1, this, &User::do_migration_to_1); ok = ok && morm::Model::do_migration(current_table_version, 2, this, &User::do_migration_to_2); + ok = ok && morm::Model::do_migration(current_table_version, 3, this, &User::do_migration_to_3); return ok; } @@ -197,6 +198,17 @@ bool User::do_migration_to_2() } +bool User::do_migration_to_3() +{ + const char * str[] = { + "ALTER TABLE core.\"user\" ADD CONSTRAINT user_pkey PRIMARY KEY (id);", + }; + + size_t len = sizeof(str) / sizeof(const char*); + return db_query(str, len); +} + + void User::display_name(EzcEnv & env) { std::wstring * dname = admin_env.get_wstr(L"display_name"); diff --git a/winixd/models/user.h b/winixd/models/user.h index c478167..d92cf45 100644 --- a/winixd/models/user.h +++ b/winixd/models/user.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2021, Tomasz Sowa + * Copyright (c) 2008-2022, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -145,8 +145,6 @@ public: void clear_passwords(); - bool do_migration(int & current_table_version); - void display_name(EzcEnv & env); @@ -156,8 +154,10 @@ public: private: + bool do_migration(int & current_table_version); bool do_migration_to_1(); bool do_migration_to_2(); + bool do_migration_to_3(); void id_is(EzcEnv & env); // takes one argument as a user id bool is_guest();