1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import os
import psycopg
import yaml
with open(os.path.join('configs', 'database.yml'), 'r') as file:
db_con_params = yaml.safe_load(file.read())
def get_comments(url: str) -> list[dict]:
with psycopg.connect(**db_con_params, row_factory=psycopg.rows.dict_row) as conn:
with conn.cursor() as cur:
cur.execute(
"SELECT id, comment, page_url, visitor_url, nickname, "
"(CASE WHEN show_contact THEN contact ELSE NULL END) as contact, created_at "
"FROM comment WHERE approved AND public AND page_url = %(url)s ORDER BY created_at DESC;", {'url': url})
comments = cur.fetchall()
return comments
def post_comment(comment: str, page_url: str, visitor_url: str=None, nickname: str=None, contact: str=None,
show_contact: bool=True, public: bool=True):
with psycopg.connect(**db_con_params, row_factory=psycopg.rows.dict_row) as conn:
with conn.cursor() as cur:
cur.execute(
"INSERT INTO comment (comment, page_url, visitor_url, nickname, contact, show_contact, public)"
"VALUES (%(comment)s, %(page_url)s, %(visitor_url)s, %(nickname)s, %(contact)s, %(show_contact)s, "
"%(public)s);",
{'comment': comment, 'page_url': page_url, 'visitor_url': visitor_url, 'nickname': nickname,
'contact': contact, 'show_contact': show_contact, 'public': public}
)
|