Implement top_n

This commit is contained in:
Corder Guy 2018-04-19 13:46:51 -05:00
parent d0da00c8e4
commit 59924f8021

View file

@ -11,9 +11,9 @@ DATABASE = '/usr/local/www/mocha-server/mocha.db'
if not path.exists(DATABASE): if not path.exists(DATABASE):
DATABASE = 'mocha.db' DATABASE = 'mocha.db'
# TODO: Add fetching of top N users by score
# TODO: Add ability to store and retrieve avatars (as image files?) # TODO: Add ability to store and retrieve avatars (as image files?)
def fetch_users(user_ids): def fetch_users(user_ids):
''' '''
Gets a list of users searching by name. Gets a list of users searching by name.
@ -37,39 +37,6 @@ def fetch_users(user_ids):
return output return output
def get_top_n(search_parameter, desc, num):
'''
In progress.
Currently the query seems to work, but returning a dict does not
preserve order.
Store an orderd id list and put that in the json?
Alternatively, sort on the client-side.
'''
conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
if desc:
cursor.execute('select * from users order by ? desc limit ?',
(search_parameter, num))
else:
cursor.execute('select * from users order by ? asc limit ?',
(search_parameter, num))
output = cursor.fetchall()
# print(output)
output = json.dumps([dict(row) for row in output])
conn.commit()
conn.close()
if output == '[]':
output = None
return output
# add new parameters as needed # add new parameters as needed
def update_row(_user_id, _updated_username): def update_row(_user_id, _updated_username):
''' '''
@ -124,7 +91,19 @@ def fetch_top_n(num):
''' '''
Retrieves the top n users by score. Retrieves the top n users by score.
''' '''
output = get_top_n('score', True, num) conn = sqlite3.connect(DATABASE)
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute('SELECT * FROM users ORDER BY score DESC')
output = cursor.fetchall()
output = json.dumps([dict(row) for row in output][:num])
conn.commit()
conn.close()
if output == '[]':
output = None
return output return output
@ -175,7 +154,7 @@ def application(environ, start_response):
if __name__ == '__main__': if __name__ == '__main__':
print(fetch_users(['1', '2', '3'])) print(fetch_top_n(3))
# vim: tabstop=4 shiftwidth=4 softtabstop=4 expandtab # vim: tabstop=4 shiftwidth=4 softtabstop=4 expandtab