You are here

function twitter_schema in Twitter 7.6

Same name and namespace in other branches
  1. 6.5 twitter.install \twitter_schema()
  2. 6.2 twitter.install \twitter_schema()
  3. 6.3 twitter.install \twitter_schema()
  4. 6.4 twitter.install \twitter_schema()
  5. 7.3 twitter.install \twitter_schema()
  6. 7.4 twitter.install \twitter_schema()
  7. 7.5 twitter.install \twitter_schema()

Implements hook_schema().

File

./twitter.install, line 40
Install, update and uninstall functions for the twitter module.

Code

function twitter_schema() {
  $schema['twitter'] = array(
    'description' => "Stores individual Twitter posts.",
    'fields' => array(
      'twitter_id' => array(
        'description' => "Unique identifier for each {twitter} post.",
        'type' => 'int',
        'unsigned' => TRUE,
        'size' => 'big',
        'not null' => TRUE,
        'default' => 0,
      ),
      'screen_name' => array(
        'description' => "Screen Name of the {twitter_account} user.",
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
      'created_at' => array(
        'description' => "Date and time the {twitter} post was created.",
        'type' => 'varchar',
        'length' => 64,
        'not null' => TRUE,
        'default' => '',
      ),
      'created_time' => array(
        'description' => "A duplicate of {twitter}.created_at in UNIX timestamp format.",
        'type' => 'int',
        'not null' => TRUE,
      ),
      'text' => array(
        'description' => "The text of the {twitter} post.",
        // Using a blob instead of a text type make it possible for MySQL to
        // handle extended UTF8 characters, like emoji.
        // @see https://www.drupal.org/node/1910376
        'type' => 'blob',
        // Balance size vs performance. The August 2015 update allows for DMs
        // that are 10,000 characters in length, so in theory MySQL's default
        // blob length of 16KB should be enough.
        'size' => 'normal',
        'not null' => FALSE,
      ),
      'source' => array(
        'description' => "The application that created the {twitter} post.",
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
      ),
      'in_reply_to_status_id' => array(
        'description' => "Unique identifier of a status this {twitter} post was replying to.",
        'type' => 'int',
        'unsigned' => TRUE,
        'size' => 'big',
        'not null' => FALSE,
        'default' => 0,
      ),
      'in_reply_to_user_id' => array(
        'description' => "Unique identifier for the {twitter_account} this post was replying to.",
        'type' => 'int',
        'unsigned' => TRUE,
        'size' => 'big',
        'not null' => FALSE,
        'default' => 0,
      ),
      'in_reply_to_screen_name' => array(
        'description' => "Screen name of the {twitter} user this post was replying to.",
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
      ),
      'truncated' => array(
        'description' => "Boolean flag indicating whether the {twitter} status was cut off to fit in the 140 character limit.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'retweet_count' => array(
        'description' => 'Stores the retweet count for each tweet.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'twitter_id',
    ),
    'indexes' => array(
      'screen_name' => array(
        'screen_name',
      ),
      'created_time' => array(
        'created_time',
      ),
    ),
  );
  $schema['twitter_account'] = array(
    'description' => "Stores information on specific Twitter user accounts.",
    'fields' => array(
      'twitter_uid' => array(
        'description' => "The unique identifier of the {twitter_account}.",
        'type' => 'int',
        'unsigned' => TRUE,
        'size' => 'big',
        'not null' => TRUE,
        'default' => 0,
      ),
      'host' => array(
        'description' => 'The host for this account can be a laconi.ca instance',
        'type' => 'varchar',
        'length' => 255,
      ),
      'screen_name' => array(
        'description' => "The unique login name of the {twitter_account} user.",
        'type' => 'varchar',
        'length' => 255,
      ),
      'oauth_token' => array(
        'description' => 'The token_key for oauth-based access.',
        'type' => 'varchar',
        'length' => 64,
      ),
      'oauth_token_secret' => array(
        'description' => 'The token_secret for oauth-based access.',
        'type' => 'varchar',
        'length' => 64,
      ),
      'name' => array(
        'description' => "The full name of the {twitter_account} user.",
        'type' => 'varchar',
        'length' => 64,
        'not null' => TRUE,
        'default' => '',
      ),
      'description' => array(
        'description' => "The description/biography associated with the {twitter_account}.",
        'type' => 'varchar',
        'length' => 255,
      ),
      'location' => array(
        'description' => "The location of the {twitter_account}'s owner.",
        'type' => 'varchar',
        'length' => 255,
      ),
      'followers_count' => array(
        'description' => "The number of users following this {twitter_account}.",
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'friends_count' => array(
        'description' => "The number of users this {twitter_account} is following.",
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'statuses_count' => array(
        'description' => "The total number of status updates performed by a user, excluding direct messages sent.",
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'favourites_count' => array(
        'description' => "The  number of statuses a user has marked as favorite.",
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'url' => array(
        'description' => "The url of the {twitter_account}'s home page.",
        'type' => 'varchar',
        'length' => 255,
      ),
      'profile_image_url' => array(
        'description' => "The url of the {twitter_account}'s profile image.",
        'type' => 'varchar',
        'length' => 255,
      ),
      'protected' => array(
        'description' => "Boolean flag indicating whether the {twitter_account}'s posts are publicly accessible.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'profile_background_color' => array(
        'description' => "hex RGB value for a user's background color",
        'type' => 'varchar',
        'length' => 6,
        'not null' => TRUE,
        'default' => '',
      ),
      'profile_text_color' => array(
        'description' => "hex RGB value for a user's text color",
        'type' => 'varchar',
        'length' => 6,
        'not null' => TRUE,
        'default' => '',
      ),
      'profile_link_color' => array(
        'description' => "hex RGB value for a user's link color",
        'type' => 'varchar',
        'length' => 6,
        'not null' => TRUE,
        'default' => '',
      ),
      'profile_sidebar_fill_color' => array(
        'description' => "hex RGB value for a user's sidebar color",
        'type' => 'varchar',
        'length' => 6,
        'not null' => TRUE,
        'default' => '',
      ),
      'profile_sidebar_border_color' => array(
        'description' => "hex RGB value for a user's border color",
        'type' => 'varchar',
        'length' => 6,
        'not null' => TRUE,
        'default' => '',
      ),
      'profile_background_image_url' => array(
        'description' => "The url of the {twitter_account}'s profile image.",
        'type' => 'varchar',
        'length' => 255,
      ),
      'profile_background_tile' => array(
        'description' => "Boolean indicating if a user's background is tiled.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 1,
      ),
      'verified' => array(
        'description' => "Indicates if a user is verified.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 1,
      ),
      'created_at' => array(
        'description' => "Date and time the {twitter_account} was created.",
        'type' => 'varchar',
        'length' => 64,
        'not null' => TRUE,
        'default' => '',
      ),
      'created_time' => array(
        'description' => "A duplicate of {twitter_account}.created_at in UNIX timestamp format.",
        'type' => 'int',
        'not null' => TRUE,
      ),
      'utc_offset' => array(
        'description' => "A duplicate of {twitter_account}.created_at in UNIX timestamp format.",
        'type' => 'int',
        'not null' => TRUE,
      ),
      'import' => array(
        'description' => "Boolean flag indicating whether the {twitter_user}'s posts should be pulled in by the site.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'mentions' => array(
        'description' => "Boolean flag indicating whether the {twitter_user}'s mentions should be pulled in by the site.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'last_refresh' => array(
        'description' => "A UNIX timestamp marking the date Twitter statuses were last fetched on.",
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'is_global' => array(
        'description' => "Boolean flag indicating if this account is available for global use.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
      ),
      'uid' => array(
        'description' => "The uid of the user who added this Twitter account.",
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => FALSE,
        'default' => 0,
      ),
    ),
    'indexes' => array(
      'screen_name' => array(
        'screen_name',
      ),
      'uid' => array(
        'uid',
      ),
    ),
    'primary key' => array(
      'twitter_uid',
    ),
  );
  return $schema;
}