"""This module contains code to make the access of MediaWiki tables easy. The module uses sqlalchemy to access the database. """ from sqlalchemy import Table, Column, types, MetaData def page_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "page" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( "page", metadata, Column("page_id", types.Integer, primary_key=True), Column("page_namespace", types.Integer, nullable=False), Column("page_title", types.String(255, convert_unicode='force'), nullable=False), Column("page_restrictions", types.String, nullable=False), # tinyblob NOT NULL Column("page_is_redirect", types.Integer, nullable=False), Column("page_is_new", types.Integer, nullable=False), Column("page_random", types.Float, nullable=False), Column("page_touched", types.String(14, convert_unicode='force'), nullable=False), Column("page_latest", types.Integer, nullable=False), Column("page_len", types.Integer, nullable=False), Column("page_content_model", types.String(32, convert_unicode='force')), Column("page_links_updated", types.String(14, convert_unicode='force')), Column("page_lang", types.String(35, convert_unicode='force')), ) def revision_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "revision" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( "revision", metadata, Column("rev_id", types.Integer, nullable=False, primary_key=True), Column("rev_page", types.Integer, nullable=False, primary_key=True), Column("rev_comment_id", types.Integer, nullable=False), Column("rev_actor", types.Integer, nullable=False), Column("rev_timestamp", types.String(14, convert_unicode='force'), nullable=False), Column("rev_minor_edit", types.Integer, nullable=False), Column("rev_deleted", types.Integer, nullable=False), Column("rev_len", types.Integer, nullable=True), Column("rev_parent_id", types.Integer, nullable=True), Column("rev_sha1", types.String(32), nullable=False), ) def slots_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "slots" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( "slots", metadata, Column("slot_revision_id", types.Integer, nullable=False, primary_key=True), Column("slot_role_id", types.Integer, nullable=False, primary_key=True), Column("slot_content_id", types.Integer, nullable=False), Column("slot_origin", types.Integer, nullable=False), ) def content_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "content" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( "content", metadata, Column("content_id", types.Integer, nullable=False, primary_key=True), Column("content_size", types.Integer, nullable=False), Column("content_sha1", types.String(32, convert_unicode='force'), nullable=False), Column("content_model", types.Integer, nullable=False), Column("content_address", types.String(255, convert_unicode='force'), nullable=False), ) def text_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "text" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( "text", metadata, Column("old_id", types.Integer, primary_key=True), Column("old_text", types.String(convert_unicode='force')), Column("old_flags", types.String(convert_unicode='force')), ) def user_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "user" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( 'user', metadata, Column("user_id", types.Integer, primary_key=True), Column("user_name", types.String(255, convert_unicode='force'), nullable=False), Column("user_real_name", types.String(255, convert_unicode='force'), nullable=False), Column("user_password", types.UnicodeText, nullable=False), # "user_newpassword" # "user_newpass_time" Column("user_email", types.String(convert_unicode='force'), nullable=False), # "user_touched" # "user_token" # "user_email_authenticated" # "user_email_token" # "user_email_token_expires" # "user_registration" # "user_editcount" ) def user_groups_table(metadata: MetaData) -> Table: """ Returns the sqlalchemy Table representing the "user_groups" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( 'user_groups', metadata, Column('ug_user', types.Integer, nullable=False, primary_key=True), Column('ug_group', types.String(255, convert_unicode='force'), nullable=False, primary_key=True), Column("ug_expiry", types.String(14, convert_unicode='force')), ) def categorylinks_table(metadata: MetaData) -> Table: """Returns the sqlalchemy Table representing the "categorylinks" table in MediaWiki. :param metadata: metadata = sqlalchemy.MetaData() """ return Table( "categorylinks", metadata, Column("cl_from", types.Integer, nullable=False, primary_key=True), Column("cl_to", types.String(255, convert_unicode='force'), nullable=False, primary_key=True), Column("cl_sortkey", types.String(230, convert_unicode='force'), nullable=False), Column("cl_timestamp", types.DateTime, nullable=False), )