Adds signing_ts as a column to hold the signature timestamp
This commit is contained in:
parent
101465ba0b
commit
b4fddfb55b
2 changed files with 24 additions and 17 deletions
|
@ -22,10 +22,13 @@ CREATE TABLE IF NOT EXISTS COMMENT (
|
||||||
ON UPDATE CASCADE ON DELETE NO ACTION -- setting null implies comment is top level
|
ON UPDATE CASCADE ON DELETE NO ACTION -- setting null implies comment is top level
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ALTER TABLE COMMENT ADD COLUMN SigningTs TEXT DEFAULT NULL;
|
||||||
|
|
||||||
-- DROP TABLE IF EXISTS CHANNEL;
|
-- DROP TABLE IF EXISTS CHANNEL;
|
||||||
CREATE TABLE IF NOT EXISTS CHANNEL(
|
CREATE TABLE IF NOT EXISTS CHANNEL(
|
||||||
ClaimId TEXT NOT NULL,
|
ClaimId TEXT NOT NULL,
|
||||||
Name TEXT NOT NULL,
|
Name TEXT NOT NULL,
|
||||||
|
PublicKey TEXT NOT NULL,
|
||||||
CONSTRAINT CHANNEL_PK PRIMARY KEY (ClaimId)
|
CONSTRAINT CHANNEL_PK PRIMARY KEY (ClaimId)
|
||||||
ON CONFLICT IGNORE
|
ON CONFLICT IGNORE
|
||||||
);
|
);
|
||||||
|
@ -38,8 +41,8 @@ CREATE INDEX IF NOT EXISTS COMMENT_CLAIM_INDEX ON COMMENT (LbryClaimId);
|
||||||
|
|
||||||
-- VIEWS
|
-- VIEWS
|
||||||
DROP VIEW IF EXISTS COMMENTS_ON_CLAIMS;
|
DROP VIEW IF EXISTS COMMENTS_ON_CLAIMS;
|
||||||
CREATE VIEW IF NOT EXISTS COMMENTS_ON_CLAIMS (comment_id, claim_id, timestamp, channel_name, channel_id, channel_url, signature, parent_id, comment) AS
|
CREATE VIEW IF NOT EXISTS COMMENTS_ON_CLAIMS (comment_id, claim_id, timestamp, channel_name, channel_id, channel_url, signature, signing_ts, parent_id, comment) AS
|
||||||
SELECT C.CommentId, C.LbryClaimId, C.Timestamp, CHAN.Name, CHAN.ClaimId, 'lbry://' || CHAN.Name || '#' || CHAN.ClaimId, C.Signature, C.ParentId, C.Body
|
SELECT C.CommentId, C.LbryClaimId, C.Timestamp, CHAN.Name, CHAN.ClaimId, 'lbry://' || CHAN.Name || '#' || CHAN.ClaimId, C.Signature, C.SigningTs, C.ParentId, C.Body
|
||||||
FROM COMMENT AS C
|
FROM COMMENT AS C
|
||||||
LEFT OUTER JOIN CHANNEL CHAN on C.ChannelId = CHAN.ClaimId
|
LEFT OUTER JOIN CHANNEL CHAN on C.ChannelId = CHAN.ClaimId
|
||||||
ORDER BY C.Timestamp DESC;
|
ORDER BY C.Timestamp DESC;
|
||||||
|
|
|
@ -27,7 +27,7 @@ def get_claim_comments(conn: sqlite3.Connection, claim_id: str, parent_id: str =
|
||||||
if top_level:
|
if top_level:
|
||||||
results = [clean(dict(row)) for row in conn.execute(
|
results = [clean(dict(row)) for row in conn.execute(
|
||||||
""" SELECT comment, comment_id, channel_name, channel_id,
|
""" SELECT comment, comment_id, channel_name, channel_id,
|
||||||
channel_url, timestamp, signature, parent_id
|
channel_url, timestamp, signature, signing_ts, parent_id
|
||||||
FROM COMMENTS_ON_CLAIMS
|
FROM COMMENTS_ON_CLAIMS
|
||||||
WHERE claim_id LIKE ? AND parent_id IS NULL
|
WHERE claim_id LIKE ? AND parent_id IS NULL
|
||||||
LIMIT ? OFFSET ? """,
|
LIMIT ? OFFSET ? """,
|
||||||
|
@ -43,7 +43,7 @@ def get_claim_comments(conn: sqlite3.Connection, claim_id: str, parent_id: str =
|
||||||
elif parent_id is None:
|
elif parent_id is None:
|
||||||
results = [clean(dict(row)) for row in conn.execute(
|
results = [clean(dict(row)) for row in conn.execute(
|
||||||
""" SELECT comment, comment_id, channel_name, channel_id,
|
""" SELECT comment, comment_id, channel_name, channel_id,
|
||||||
channel_url, timestamp, signature, parent_id
|
channel_url, timestamp, signature, signing_ts, parent_id
|
||||||
FROM COMMENTS_ON_CLAIMS
|
FROM COMMENTS_ON_CLAIMS
|
||||||
WHERE claim_id LIKE ?
|
WHERE claim_id LIKE ?
|
||||||
LIMIT ? OFFSET ? """,
|
LIMIT ? OFFSET ? """,
|
||||||
|
@ -59,7 +59,7 @@ def get_claim_comments(conn: sqlite3.Connection, claim_id: str, parent_id: str =
|
||||||
else:
|
else:
|
||||||
results = [clean(dict(row)) for row in conn.execute(
|
results = [clean(dict(row)) for row in conn.execute(
|
||||||
""" SELECT comment, comment_id, channel_name, channel_id,
|
""" SELECT comment, comment_id, channel_name, channel_id,
|
||||||
channel_url, timestamp, signature, parent_id
|
channel_url, timestamp, signature, signing_ts, parent_id
|
||||||
FROM COMMENTS_ON_CLAIMS
|
FROM COMMENTS_ON_CLAIMS
|
||||||
WHERE claim_id LIKE ? AND parent_id = ?
|
WHERE claim_id LIKE ? AND parent_id = ?
|
||||||
LIMIT ? OFFSET ? """,
|
LIMIT ? OFFSET ? """,
|
||||||
|
@ -106,7 +106,7 @@ def _insert_channel(conn: sqlite3.Connection, channel_name: str, channel_id: str
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def insert_channel_or_error(conn: sqlite3.Connection, channel_name: str, channel_id):
|
def insert_channel_or_error(conn: sqlite3.Connection, channel_name: str, channel_id: str):
|
||||||
try:
|
try:
|
||||||
validate_channel(channel_id, channel_name)
|
validate_channel(channel_id, channel_name)
|
||||||
_insert_channel(conn, channel_name, channel_id)
|
_insert_channel(conn, channel_name, channel_id)
|
||||||
|
@ -116,7 +116,8 @@ def insert_channel_or_error(conn: sqlite3.Connection, channel_name: str, channel
|
||||||
|
|
||||||
|
|
||||||
def _insert_comment(conn: sqlite3.Connection, claim_id: str = None, comment: str = None,
|
def _insert_comment(conn: sqlite3.Connection, claim_id: str = None, comment: str = None,
|
||||||
channel_id: str = None, signature: str = None, parent_id: str = None) -> str:
|
channel_id: str = None, signature: str = None, signing_ts: str = None,
|
||||||
|
parent_id: str = None) -> str:
|
||||||
timestamp = int(time.time())
|
timestamp = int(time.time())
|
||||||
prehash = ':'.join((claim_id, comment, str(timestamp),))
|
prehash = ':'.join((claim_id, comment, str(timestamp),))
|
||||||
prehash = bytes(prehash.encode('utf-8'))
|
prehash = bytes(prehash.encode('utf-8'))
|
||||||
|
@ -124,10 +125,10 @@ def _insert_comment(conn: sqlite3.Connection, claim_id: str = None, comment: str
|
||||||
with conn:
|
with conn:
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"""
|
"""
|
||||||
INSERT INTO COMMENT(CommentId, LbryClaimId, ChannelId, Body, ParentId, Signature, Timestamp)
|
INSERT INTO COMMENT(CommentId, LbryClaimId, ChannelId, Body, ParentId, Timestamp, Signature, SigningTs)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
""",
|
""",
|
||||||
(comment_id, claim_id, channel_id, comment, parent_id, signature, timestamp)
|
(comment_id, claim_id, channel_id, comment, parent_id, timestamp, signature, signing_ts)
|
||||||
)
|
)
|
||||||
logger.debug('Inserted Comment into DB, `comment_id`: %s', comment_id)
|
logger.debug('Inserted Comment into DB, `comment_id`: %s', comment_id)
|
||||||
return comment_id
|
return comment_id
|
||||||
|
@ -137,7 +138,7 @@ def get_comment_or_none(conn: sqlite3.Connection, comment_id: str) -> dict:
|
||||||
with conn:
|
with conn:
|
||||||
curry = conn.execute(
|
curry = conn.execute(
|
||||||
"""
|
"""
|
||||||
SELECT comment, comment_id, channel_name, channel_id, channel_url, timestamp, signature, parent_id
|
SELECT comment, comment_id, channel_name, channel_id, channel_url, timestamp, signature, signing_ts, parent_id
|
||||||
FROM COMMENTS_ON_CLAIMS WHERE comment_id = ?
|
FROM COMMENTS_ON_CLAIMS WHERE comment_id = ?
|
||||||
""",
|
""",
|
||||||
(comment_id,)
|
(comment_id,)
|
||||||
|
@ -146,12 +147,15 @@ def get_comment_or_none(conn: sqlite3.Connection, comment_id: str) -> dict:
|
||||||
return clean(dict(thing)) if thing else None
|
return clean(dict(thing)) if thing else None
|
||||||
|
|
||||||
|
|
||||||
def create_comment(conn: sqlite3.Connection, comment: str, claim_id: str,
|
def validate_signature(*args, **kwargs):
|
||||||
channel_id: str = None, channel_name: str = None,
|
pass
|
||||||
signature: str = None, parent_id: str = None):
|
|
||||||
if channel_id or channel_name or signature:
|
|
||||||
# do nothing with signature for now
|
def create_comment(conn: sqlite3.Connection, comment: str, claim_id: str, channel_id: str = None,
|
||||||
insert_channel_or_error(conn, channel_name=channel_name, channel_id=channel_id)
|
channel_name: str = None, signature: str = None, signing_ts: str = None, parent_id: str = None):
|
||||||
|
if channel_id or channel_name or signature or signing_ts:
|
||||||
|
validate_signature(signature, signing_ts, comment, channel_name, channel_id)
|
||||||
|
insert_channel_or_error(conn, channel_name, channel_id)
|
||||||
try:
|
try:
|
||||||
comment_id = _insert_comment(
|
comment_id = _insert_comment(
|
||||||
conn=conn, comment=comment, claim_id=claim_id, channel_id=channel_id,
|
conn=conn, comment=comment, claim_id=claim_id, channel_id=channel_id,
|
||||||
|
|
Loading…
Add table
Reference in a new issue