import base64

db.define_table(
    'Player',
    Field('room_id', db.Room, notnull=True),
    Field('hashcode', 'string', notnull=True),
    Field('name', 'string', notnull=True),
    Field('role', 'string', default="idle"),
    Field('role_next', 'string', default="idle"),
    Field('prompts', 'text', default=base64.standard_b64encode(b'[]'), notnull=True),
    Field('inputs', 'text', default=base64.standard_b64encode(b'[]'), notnull=True),
    Field('input_max', 'integer', default=0, notnull=True),
    Field('submit_done', 'boolean', default=False),
    Field('creation', 'datetime', default=request.now, notnull=True)
)

def generateHashCode():
    digest = blake2b(digest_size=32)
    digest.update(str(request.now).encode("utf-8"))
    digest.update(str(random.random()).encode("utf-8"))
    return (digest.hexdigest())

db.Player.hashcode.default = generateHashCode