From d680a9d173667f179cc1ff89b76ee7513bceba86 Mon Sep 17 00:00:00 2001 From: yackob03 Date: Fri, 27 Sep 2013 23:33:59 -0400 Subject: [PATCH] Create indices that we will probably need. --- data/database.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/data/database.py b/data/database.py index e4c276c03..cf83b50e0 100644 --- a/data/database.py +++ b/data/database.py @@ -15,14 +15,14 @@ class BaseModel(Model): class User(BaseModel): - username = CharField(unique=True) + username = CharField(unique=True, index=True) password_hash = CharField() - email = CharField(unique=True) + email = CharField(unique=True, index=True) verified = BooleanField(default=False) class Visibility(BaseModel): - name = CharField() + name = CharField(index=True) class Repository(BaseModel): @@ -40,14 +40,20 @@ class Repository(BaseModel): class Role(BaseModel): - name = CharField() + name = CharField(index=True) class RepositoryPermission(BaseModel): - user = ForeignKeyField(User) - repository = ForeignKeyField(Repository) + user = ForeignKeyField(User, index=True) + repository = ForeignKeyField(Repository, index=True) role = ForeignKeyField(Role) + class Meta: + database = db + indexes = ( + (('user', 'repository'), True), + ) + def random_string_generator(length=16): def random_string(): @@ -58,14 +64,14 @@ def random_string_generator(length=16): class AccessToken(BaseModel): - code = CharField(default=random_string_generator(), unique=True) + code = CharField(default=random_string_generator(), unique=True, index=True) user = ForeignKeyField(User) repository = ForeignKeyField(Repository) created = DateTimeField(default=datetime.now) class EmailConfirmation(BaseModel): - code = CharField(default=random_string_generator(), unique=True) + code = CharField(default=random_string_generator(), unique=True, index=True) user = ForeignKeyField(User) pw_reset = BooleanField(default=False) email_confirm = BooleanField(default=False) @@ -96,6 +102,12 @@ class RepositoryTag(BaseModel): image = ForeignKeyField(Image) repository = ForeignKeyField(Repository) + class Meta: + database = db + indexes = ( + (('repository', 'name'), True), + ) + def initialize_db(): create_model_tables([User, Repository, Image, AccessToken, Role,