]> ToastFreeware Gitweb - philipp/winterrodeln/wrpylib.git/blob - wrpylib/mwdb.py
Remove non-existing column "page_restrictions" from page table model.
[philipp/winterrodeln/wrpylib.git] / wrpylib / mwdb.py
1 """This module contains code to make the access of MediaWiki tables
2 easy. The module uses sqlalchemy to access the database.
3 """
4 from sqlalchemy import Table, Column, types, MetaData
5
6
7 def page_table(metadata: MetaData) -> Table:
8     """Returns the sqlalchemy Table representing the "page" table in MediaWiki.
9     :param metadata: metadata = sqlalchemy.MetaData()
10     """
11     return Table(
12         "page", metadata,
13         Column("page_id", types.Integer, primary_key=True),
14         Column("page_namespace", types.Integer, nullable=False),
15         Column("page_title", types.String(255, convert_unicode='force'), nullable=False),
16         Column("page_is_redirect", types.Integer, nullable=False),
17         Column("page_is_new", types.Integer, nullable=False),
18         Column("page_random", types.Float, nullable=False),
19         Column("page_touched", types.String(14, convert_unicode='force'), nullable=False),
20         Column("page_links_updated", types.String(14, convert_unicode='force')),
21         Column("page_latest", types.Integer, nullable=False),
22         Column("page_len", types.Integer, nullable=False),
23         Column("page_content_model", types.String(32, convert_unicode='force')),
24         Column("page_lang", types.String(35, convert_unicode='force')),
25     )
26
27
28 def revision_table(metadata: MetaData) -> Table:
29     """Returns the sqlalchemy Table representing the "revision" table in MediaWiki.
30     :param metadata: metadata = sqlalchemy.MetaData()
31     """
32     return Table(
33         "revision", metadata,
34         Column("rev_id", types.Integer, nullable=False, primary_key=True),
35         Column("rev_page", types.Integer, nullable=False, primary_key=True),
36         Column("rev_comment_id", types.Integer, nullable=False),
37         Column("rev_actor", types.Integer, nullable=False),
38         Column("rev_timestamp", types.String(14, convert_unicode='force'), nullable=False),
39         Column("rev_minor_edit", types.Integer, nullable=False),
40         Column("rev_deleted", types.Integer, nullable=False),
41         Column("rev_len", types.Integer, nullable=True),
42         Column("rev_parent_id", types.Integer, nullable=True),
43         Column("rev_sha1", types.String(32), nullable=False),
44     )
45
46
47 def slots_table(metadata: MetaData) -> Table:
48     """Returns the sqlalchemy Table representing the "slots" table in MediaWiki.
49     :param metadata: metadata = sqlalchemy.MetaData()
50     """
51     return Table(
52         "slots", metadata,
53         Column("slot_revision_id", types.Integer, nullable=False, primary_key=True),
54         Column("slot_role_id", types.Integer, nullable=False, primary_key=True),
55         Column("slot_content_id", types.Integer, nullable=False),
56         Column("slot_origin", types.Integer, nullable=False),
57     )
58
59
60 def content_table(metadata: MetaData) -> Table:
61     """Returns the sqlalchemy Table representing the "content" table in MediaWiki.
62     :param metadata: metadata = sqlalchemy.MetaData()
63     """
64     return Table(
65         "content", metadata,
66         Column("content_id", types.Integer, nullable=False, primary_key=True),
67         Column("content_size", types.Integer, nullable=False),
68         Column("content_sha1", types.String(32, convert_unicode='force'), nullable=False),
69         Column("content_model", types.Integer, nullable=False),
70         Column("content_address", types.String(255, convert_unicode='force'), nullable=False),
71     )
72
73
74 def text_table(metadata: MetaData) -> Table:
75     """Returns the sqlalchemy Table representing the "text" table in MediaWiki.
76     :param metadata: metadata = sqlalchemy.MetaData()
77     """
78     return Table(
79         "text", metadata,
80         Column("old_id", types.Integer, primary_key=True),
81         Column("old_text", types.String(convert_unicode='force')),
82         Column("old_flags", types.String(convert_unicode='force')),
83     )
84
85
86 def user_table(metadata: MetaData) -> Table:
87     """Returns the sqlalchemy Table representing the "user" table in MediaWiki.
88     :param metadata: metadata = sqlalchemy.MetaData()
89     """
90     return Table(
91         'user', metadata,
92         Column("user_id", types.Integer, primary_key=True),
93         Column("user_name", types.String(255, convert_unicode='force'), nullable=False),
94         Column("user_real_name", types.String(255, convert_unicode='force'), nullable=False),
95         Column("user_password", types.UnicodeText, nullable=False),
96         # "user_newpassword"
97         # "user_newpass_time"
98         Column("user_email", types.String(convert_unicode='force'), nullable=False),
99         # "user_touched"
100         # "user_token"
101         # "user_email_authenticated"
102         # "user_email_token"
103         # "user_email_token_expires"
104         # "user_registration"
105         # "user_editcount"
106     )
107
108
109 def user_groups_table(metadata: MetaData) -> Table:
110     """
111     Returns the sqlalchemy Table representing the "user_groups" table in MediaWiki.
112
113     :param metadata: metadata = sqlalchemy.MetaData()
114     """
115     return Table(
116         'user_groups', metadata,
117         Column('ug_user', types.Integer, nullable=False, primary_key=True),
118         Column('ug_group', types.String(255, convert_unicode='force'), nullable=False, primary_key=True),
119         Column("ug_expiry", types.String(14, convert_unicode='force')),
120     )
121
122
123 def categorylinks_table(metadata: MetaData) -> Table:
124     """Returns the sqlalchemy Table representing the "categorylinks" table in MediaWiki.
125     :param metadata: metadata = sqlalchemy.MetaData()
126     """
127     return Table(
128         "categorylinks", metadata,
129         Column("cl_from", types.Integer, nullable=False, primary_key=True),
130         Column("cl_to", types.String(255, convert_unicode='force'), nullable=False, primary_key=True),
131         Column("cl_sortkey", types.String(230, convert_unicode='force'), nullable=False),
132         Column("cl_timestamp", types.DateTime, nullable=False),
133     )