from mongoengine import Document
from mongoengine.fields import StringField, DateTimeField, BooleanField, IntField
from datetime import datetime, timezone

class Character(Document):
    name = StringField(required=True)
    gender = StringField(required=True)
    character_id = StringField(required=True, unique=True)
    backstory = StringField()
    client_id = StringField(required=True)

    meta = {
        'collection': 'character_descriptions',
        'ordering': ['-character_id']
    }

class Client(Document):
    client_id = StringField(required=True, unique=True)
    username = StringField(required=True)
    email = StringField(required=True)
    password = StringField(required=True)
    created_at = DateTimeField(default=datetime.now(timezone.utc))
    is_test_account = BooleanField(default=False)
    token_used = IntField(default=0)

    meta = {
        'collection': 'clients',
        'ordering': ['-created_at']
    }
