mirror of
https://github.com/simple-login/app.git
synced 2025-02-24 07:43:54 +08:00
add index on user_id, mailbox_id, ... if possible
This commit is contained in:
parent
81f9f9f41b
commit
255a7e085a
2 changed files with 69 additions and 12 deletions
|
@ -871,9 +871,9 @@ def generate_email(
|
|||
|
||||
|
||||
class Alias(db.Model, ModelMixin):
|
||||
"""Alias"""
|
||||
|
||||
user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False)
|
||||
user_id = db.Column(
|
||||
db.ForeignKey(User.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
email = db.Column(db.String(128), unique=True, nullable=False)
|
||||
|
||||
# the name to use when user replies/sends from alias
|
||||
|
@ -901,7 +901,7 @@ class Alias(db.Model, ModelMixin):
|
|||
|
||||
# an alias can be owned by another mailbox
|
||||
mailbox_id = db.Column(
|
||||
db.ForeignKey("mailbox.id", ondelete="cascade"), nullable=False
|
||||
db.ForeignKey("mailbox.id", ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
|
||||
# prefix _ to avoid this object being used accidentally.
|
||||
|
@ -1169,8 +1169,12 @@ class Contact(db.Model, ModelMixin):
|
|||
db.UniqueConstraint("alias_id", "website_email", name="uq_contact"),
|
||||
)
|
||||
|
||||
user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False)
|
||||
alias_id = db.Column(db.ForeignKey(Alias.id, ondelete="cascade"), nullable=False)
|
||||
user_id = db.Column(
|
||||
db.ForeignKey(User.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
alias_id = db.Column(
|
||||
db.ForeignKey(Alias.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
|
||||
name = db.Column(
|
||||
db.String(512), nullable=True, default=None, server_default=text("NULL")
|
||||
|
@ -1310,9 +1314,11 @@ class Contact(db.Model, ModelMixin):
|
|||
|
||||
|
||||
class EmailLog(db.Model, ModelMixin):
|
||||
user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False)
|
||||
user_id = db.Column(
|
||||
db.ForeignKey(User.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
contact_id = db.Column(
|
||||
db.ForeignKey(Contact.id, ondelete="cascade"), nullable=False
|
||||
db.ForeignKey(Contact.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
|
||||
# whether this is a reply
|
||||
|
@ -1660,8 +1666,10 @@ class Job(db.Model, ModelMixin):
|
|||
|
||||
|
||||
class Mailbox(db.Model, ModelMixin):
|
||||
user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False)
|
||||
email = db.Column(db.String(256), nullable=False)
|
||||
user_id = db.Column(
|
||||
db.ForeignKey(User.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
email = db.Column(db.String(256), nullable=False, index=True)
|
||||
verified = db.Column(db.Boolean, default=False, nullable=False)
|
||||
force_spf = db.Column(db.Boolean, default=True, server_default="1", nullable=False)
|
||||
|
||||
|
@ -1831,9 +1839,11 @@ class AliasMailbox(db.Model, ModelMixin):
|
|||
db.UniqueConstraint("alias_id", "mailbox_id", name="uq_alias_mailbox"),
|
||||
)
|
||||
|
||||
alias_id = db.Column(db.ForeignKey(Alias.id, ondelete="cascade"), nullable=False)
|
||||
alias_id = db.Column(
|
||||
db.ForeignKey(Alias.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
mailbox_id = db.Column(
|
||||
db.ForeignKey(Mailbox.id, ondelete="cascade"), nullable=False
|
||||
db.ForeignKey(Mailbox.id, ondelete="cascade"), nullable=False, index=True
|
||||
)
|
||||
|
||||
alias = db.relationship(Alias)
|
||||
|
|
47
migrations/versions/2020_120217_56c790ec8ab4_.py
Normal file
47
migrations/versions/2020_120217_56c790ec8ab4_.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
"""empty message
|
||||
|
||||
Revision ID: 56c790ec8ab4
|
||||
Revises: 623662ea0e7e
|
||||
Create Date: 2020-12-02 17:32:23.332830
|
||||
|
||||
"""
|
||||
import sqlalchemy_utils
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '56c790ec8ab4'
|
||||
down_revision = '623662ea0e7e'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_index(op.f('ix_alias_mailbox_id'), 'alias', ['mailbox_id'], unique=False)
|
||||
op.create_index(op.f('ix_alias_user_id'), 'alias', ['user_id'], unique=False)
|
||||
op.create_index(op.f('ix_alias_mailbox_alias_id'), 'alias_mailbox', ['alias_id'], unique=False)
|
||||
op.create_index(op.f('ix_alias_mailbox_mailbox_id'), 'alias_mailbox', ['mailbox_id'], unique=False)
|
||||
op.create_index(op.f('ix_contact_alias_id'), 'contact', ['alias_id'], unique=False)
|
||||
op.create_index(op.f('ix_contact_user_id'), 'contact', ['user_id'], unique=False)
|
||||
op.create_index(op.f('ix_email_log_contact_id'), 'email_log', ['contact_id'], unique=False)
|
||||
op.create_index(op.f('ix_email_log_user_id'), 'email_log', ['user_id'], unique=False)
|
||||
op.create_index(op.f('ix_mailbox_email'), 'mailbox', ['email'], unique=False)
|
||||
op.create_index(op.f('ix_mailbox_user_id'), 'mailbox', ['user_id'], unique=False)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_mailbox_user_id'), table_name='mailbox')
|
||||
op.drop_index(op.f('ix_mailbox_email'), table_name='mailbox')
|
||||
op.drop_index(op.f('ix_email_log_user_id'), table_name='email_log')
|
||||
op.drop_index(op.f('ix_email_log_contact_id'), table_name='email_log')
|
||||
op.drop_index(op.f('ix_contact_user_id'), table_name='contact')
|
||||
op.drop_index(op.f('ix_contact_alias_id'), table_name='contact')
|
||||
op.drop_index(op.f('ix_alias_mailbox_mailbox_id'), table_name='alias_mailbox')
|
||||
op.drop_index(op.f('ix_alias_mailbox_alias_id'), table_name='alias_mailbox')
|
||||
op.drop_index(op.f('ix_alias_user_id'), table_name='alias')
|
||||
op.drop_index(op.f('ix_alias_mailbox_id'), table_name='alias')
|
||||
# ### end Alembic commands ###
|
Loading…
Reference in a new issue