<?php
// This file is part of GNU social - https://www.gnu.org/software/social
//
// GNU social is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// GNU social is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with GNU social.  If not, see <http://www.gnu.org/licenses/>.

/**
 *
 * Some notes...
 *
 * decimal <-> numeric
 *
 * MySQL 'timestamp' columns were formerly used for 'modified' files for their
 * auto-updating properties. This didn't play well with changes to cache usage
 * in 0.9.x, as we don't know the timestamp value at INSERT time and never
 * have a chance to load it up again before caching. For now I'm leaving them
 * in, but we may want to clean them up later.
 *
 * Current code should be setting 'created' and 'modified' fields explicitly;
 * this also avoids mismatches between server and client timezone settings.
 *
 *
 * fulltext indexes?
 * got one or two things wanting a custom charset setting on a field?
 *
 * foreign keys are kinda funky...
 *     those specified in inline syntax (as all in the original .sql) are NEVER ENFORCED on mysql
 *     those made with an explicit 'foreign key' WITHIN INNODB and IF there's a proper index, do get enforced
 *     double-check what we've been doing on postgres?
 */

defined('GNUSOCIAL') || die();

$classes = [
    'Schema_version',
    'Profile',
    'Avatar',
    'Sms_carrier',
    'User',
    'User_group',
    'Subscription',
    'Group_join_queue',
    'Subscription_queue',
    'Consumer',
    'Oauth_application',
    'Oauth_token_association',
    'Conversation',
    'Notice',
    'Notice_location',
    'Notice_source',
    'Notice_prefs',
    'Reply',
    'Token',
    'Nonce',
    'Oauth_application_user',
    'Confirm_address',
    'Remember_me',
    'Queue_item',
    'Notice_tag',
    'Foreign_service',
    'Foreign_user',
    'Foreign_link',
    'Foreign_subscription',
    'Invitation',
    'Profile_prefs',
    'Profile_list',
    'Profile_tag',
    'Profile_tag_subscription',
    'Profile_block',
    'Related_group',
    'Group_inbox',
    'Group_member',
    'File',
    'File_redirection',
    'File_thumbnail',
    'File_to_post',
    'Group_block',
    'Group_alias',
    'Session',
    'Config',
    'Profile_role',
    'Location_namespace',
    'Login_token',
    'User_location_prefs',
    'User_im_prefs',
    'Local_group',
    'User_urlshortener_prefs',
    'Old_school_prefs',
    'User_username',
    'Attention'
];

foreach ($classes as $cls) {
    $schema[strtolower($cls)] = call_user_func([$cls, 'schemaDef']);
}