steam-review-scraper / steam_review_scraper / db_definition.py
db_definition.py
Raw
"""Definitions for database construction and access.

Attributes:
    TABLE_STEAM_REVIEWS (str): Reviews table name.
    TABLE_USERS (str): Users table name.
    TABLE_STEAM_REVIEW_ISSUES (str): Issues table name.
    TABLE_STEAM_PLAYER_COUNT (str): Player count table name.
    TABLE_STEAM_LANGUAGES (str): Language table name.
    TABLE_EVENTS (str): Events table name.
    TABLE_STEAM_GAMES (str): Games table name.

    COLUMNS_STEAM_REVIEWS (str): Steam reviews columns.
    CREATE_STEAM_REVIEWS (str): Create steam reviews table.
    COLUMNS_USERS (str): Steam users columns.
    CREATE_USERS (str): Create steam users table.
    COLUMNS_STEAM_REVIEW_ISSUES (str): Steam reviews issues columns.
    CREATE_STEAM_REVIEW_ISSUES (str): Create steam review issues table.
    COLUMNS_STEAM_PLAYER_COUNT (str): Player count columns.
    CREATE_STEAM_PLAYER_COUNT (str): Create steam player count table.
    COLUMNS_STEAM_LANGUAGES (str): Languages columns.
    CREATE_STEAM_LANGUAGES (str): Create languages table.
    COLUMNS_EVENTS (str): Events columns.
    CREATE_EVENTS (str): Create events table.
    COLUMNS_STEAM_GAMES (str): Steam games columns.
    CREATE_STEAM_GAMES (str): Create steam games table.

    ORDER_MODES (str): Available ordering options using db functions.
"""

from collections import OrderedDict


TABLE_STEAM_REVIEWS = "stats_steam_reviews"
TABLE_USERS = "stats_users"
TABLE_STEAM_REVIEW_ISSUES = "stats_steam_review_issues"
TABLE_STEAM_PLAYER_COUNT = "stats_steam_player_count"
TABLE_STEAM_LANGUAGES = "stats_steam_languages"
TABLE_EVENTS = "stats_events"
TABLE_STEAM_GAMES = "stats_steam_games"


COLUMNS_STEAM_REVIEWS = OrderedDict([
    ("id", "INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT"),
    ("steam_appid", "bigint"),
    ("recommended", "boolean NOT NULL"),
    ("user_name", "character varying"),
    ("content", "character varying"),
    ("hours_played", "numeric"),
    ("review_url", "character varying NOT NULL"),
    ("date_posted", "timestamp without time zone NOT NULL"),
    ("date_updated", "timestamp without time zone"),
    ("helpful_amount", "integer"),
    ("helpful_total", "integer"),
    ("games_owned", "integer"),
    ("responded_by", "bigint"),
    ("responded_date", "timestamp without time zone"),
    ("lang_key", "NUMERIC"),
    ("received_compensation", "boolean"),
    ("entry_updated", "integer"),
    ("can_be_turned", "boolean NOT NULL DEFAULT 0"),
    ("issue_list", "bigintlst"),
])


COLUMNS_USERS = OrderedDict([
    ("id", "INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT"),
    ("user_names", "character varying NOT NULL"),
    ("steam_url", "character varying"),
])


COLUMNS_STEAM_REVIEW_ISSUES = OrderedDict([
    ("id", "INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT"),
    ("name", "character varying NOT NULL"),
    ("resolved_status", "bigint NOT NULL DEFAULT 0")
])


COLUMNS_STEAM_PLAYER_COUNT = OrderedDict([
    ("player_count", "integer NOT NULL"),
    ("time_stamp", "timestamp without time zone NOT NULL"),
    ("steam_appid", "bigint NOT NULL"),
])


COLUMNS_STEAM_LANGUAGES = OrderedDict([
    ("lang_key", "character varying NOT NULL"),
    ("name", "character varying NOT NULL"),
    ("steam_key", "character varying NOT NULL"),
])


COLUMNS_EVENTS = OrderedDict([
    ("name", "character varying NOT NULL"),
    ("description", "character varying NOT NULL"),
    ("time_stamp", "timestamp without time zone NOT NULL"),
    ("id", "INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT"),
    ("type", "stats_event_type NOT NULL DEFAULT 'Patch'"),
    ("steam_appid", "bigint NOT NULL")
])


COLUMNS_STEAM_GAMES = OrderedDict([
    ("steam_appid", "bigint NOT NULL"),
    ("display_name", "character varying NOT NULL"),
])


CREATE_TABLE_STEAM_REVIEWS = """CREATE TABLE "{0}" ({1},
    FOREIGN KEY("lang_key") REFERENCES "stats_steam_languages"("lang_key")
);""".format(TABLE_STEAM_REVIEWS, ",".join("'{0}' {1}".format(*t) for t in COLUMNS_STEAM_REVIEWS.items()))


CREATE_TABLE_USERS = """CREATE TABLE "{0}" ({1});""".format(
    TABLE_USERS, ",".join("'{0}' {1}".format(*t) for t in COLUMNS_USERS.items()))


CREATE_TABLE_STEAM_REVIEW_ISSUES = """CREATE TABLE "{0}" ({1});""".format(
    TABLE_STEAM_REVIEW_ISSUES,
    ",".join("'{0}' {1}".format(*t) for t in COLUMNS_STEAM_REVIEW_ISSUES.items()))


CREATE_TABLE_STEAM_PLAYER_COUNT = """CREATE TABLE "{0}" ({1});""".format(
    TABLE_STEAM_PLAYER_COUNT,
    ",".join("'{0}' {1}".format(*t) for t in COLUMNS_STEAM_PLAYER_COUNT.items()))


CREATE_TABLE_STEAM_LANGUAGES = """CREATE TABLE "{0}" ({1}, PRIMARY KEY("lang_key"));""".format(
        TABLE_STEAM_LANGUAGES,
        ",".join("'{0}' {1}".format(*t) for t in COLUMNS_STEAM_LANGUAGES.items()))


CREATE_TABLE_EVENTS = """CREATE TABLE "{0}" ({1});""".format(
    TABLE_EVENTS, ",".join("'{0}' {1}".format(*t) for t in COLUMNS_EVENTS.items()))


CREATE_TABLE_STEAM_GAMES = """CREATE TABLE "{0}" ({1}, PRIMARY KEY("steam_appid"));""".format(
    TABLE_STEAM_GAMES, ",".join("'{0}' {1}".format(*t) for t in COLUMNS_STEAM_GAMES.items()))


ORDER_MODES = (
    "desc",
    "asc"
)