From dbb69dbcd5835526a93253d301110dec9f0c2fbe Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Wed, 7 Sep 2016 07:48:24 +0200
Subject: [PATCH] Fix Identity Primary key

An Identity Primary Key should be based on
(Currency, Pubkey, Uid, Blockstamp)
---
 src/sakia/data/entities/identity.py             | 2 +-
 src/sakia/data/repositories/identities.py       | 2 +-
 src/sakia/data/repositories/meta.py             | 4 ++--
 src/sakia/tests/unit/data/test_identies_repo.py | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/sakia/data/entities/identity.py b/src/sakia/data/entities/identity.py
index 8fa1a565..6f28d77c 100644
--- a/src/sakia/data/entities/identity.py
+++ b/src/sakia/data/entities/identity.py
@@ -7,8 +7,8 @@ class Identity:
     currency = attr.ib(convert=str)
     pubkey = attr.ib(convert=str)
     uid = attr.ib(convert=str)
-    signature = attr.ib(convert=str)
     blockstamp = attr.ib(convert=block_uid)
+    signature = attr.ib(convert=str)
     timestamp = attr.ib(convert=int)
     member = attr.ib(validator=attr.validators.instance_of(bool))
     membership_buid = attr.ib(convert=block_uid)
diff --git a/src/sakia/data/repositories/identities.py b/src/sakia/data/repositories/identities.py
index c9615450..8b5783d7 100644
--- a/src/sakia/data/repositories/identities.py
+++ b/src/sakia/data/repositories/identities.py
@@ -24,8 +24,8 @@ class IdentitiesRepo:
         with self._conn:
             self.conn.execute("UPDATE identities SET "
                               "UID=?, "
-                              "SIGNATURE=?, "
                               "BLOCKSTAMP=?,"
+                              "SIGNATURE=?, "
                               "TS=?,"
                               "MEMBER=?,"
                               "MS_BUID=?,"
diff --git a/src/sakia/data/repositories/meta.py b/src/sakia/data/repositories/meta.py
index 1d831c5c..7e664782 100644
--- a/src/sakia/data/repositories/meta.py
+++ b/src/sakia/data/repositories/meta.py
@@ -48,13 +48,13 @@ class MetaDatabase:
                                "CURRENCY varchar(30), "
                                "PUBKEY varchar(50),"
                                "UID varchar(255),"
-                               "SIGNATURE varchar(100),"
                                "BLOCKSTAMP varchar(100),"
+                               "SIGNATURE varchar(100),"
                                "TS int,"
                                "MEMBER boolean,"
                                "MS_BUID varchar(100),"
                                "MS_TIMESTAMP int,"
-                               "PRIMARY KEY (CURRENCY, PUBKEY)"
+                               "PRIMARY KEY (CURRENCY, PUBKEY, UID, BLOCKSTAMP)"
                                ")"
                                )
 
diff --git a/src/sakia/tests/unit/data/test_identies_repo.py b/src/sakia/tests/unit/data/test_identies_repo.py
index c33059fd..ca91bd6d 100644
--- a/src/sakia/tests/unit/data/test_identies_repo.py
+++ b/src/sakia/tests/unit/data/test_identies_repo.py
@@ -22,8 +22,8 @@ class TestIdentitiesRepo(unittest.TestCase):
         identities_repo = IdentitiesRepo(self.con)
         identities_repo.insert(Identity("testcurrency", "7Aqw6Efa9EzE7gtsc8SveLLrM7gm6NEGoywSv4FJx6pZ",
                                         "john",
-                                        "H41/8OGV2W4CLKbE35kk5t1HJQsb3jEM0/QGLUf80CwJvGZf3HvVCcNtHPUFoUBKEDQO9mPK3KJkqOoxHpqHCw==",
                                         "20-7518C700E78B56CC21FB1DDC6CBAB24E0FACC9A798F5ED8736EA007F38617D67",
+                                        "H41/8OGV2W4CLKbE35kk5t1HJQsb3jEM0/QGLUf80CwJvGZf3HvVCcNtHPUFoUBKEDQO9mPK3KJkqOoxHpqHCw==",
                                         1473108382,
                                         False,
                                         None,
-- 
GitLab