/// Database contract
///
/// @author Pierre HUBERT

/// Main information
class DatabaseContract {
  static const DATABASE_VERSION = 2;
  static const DATABASE_FILE_NAME = "database.sqlite";
}

/// Base table contract
abstract class BaseTableContract {
  static const C_ID = "id";
}

/// User table contract
abstract class UserTableContract {
  static const TABLE_NAME = "users";
  static const C_ID = BaseTableContract.C_ID;
  static const C_FIRST_NAME = "first_name";
  static const C_LAST_NAME = "last_name";
  static const C_VISIBILITY = "visibility";
  static const C_VIRTUAL_DIRECTORY = "virtual_directory";
  static const C_ACCOUNT_IMAGE_URL = "account_image_url";
  static const C_CUSTOM_EMOJIES = "custom_emojies";
}

/// Conversations table contract
abstract class ConversationTableContract {
  static const TABLE_NAME = "conversations";
  static const C_ID = BaseTableContract.C_ID;
  static const C_OWNER_ID = "owner_id";
  static const C_LAST_ACTIVE = "last_active";
  static const C_NAME = "name";
  static const C_FOLLOWING = "following";
  static const C_SAW_LAST_MESSAGE = "saw_last_message";
  static const C_MEMBERS = "members";
  static const C_CAN_EVERYONE_ADD_MEMBERS = "can_everyone_add_members";
}

/// Conversations messages table contract
abstract class ConversationsMessagesTableContract {
  static const TABLE_NAME = "conversations_messages";
  static const C_ID = BaseTableContract.C_ID;
  static const C_CONVERSATION_ID = "conversation_id";
  static const C_USER_ID = "user_id";
  static const C_TIME_INSERT = "time_insert";
  static const C_MESSAGE = "message";
  static const C_IMAGE_URL = "image_url";
}

/// Friends table contract
abstract class FriendsListTableContract {
  static const TABLE_NAME = "friends";
  static const C_ID = BaseTableContract.C_ID;
  static const C_ACCEPTED = "accepted";
  static const C_LAST_ACTIVE = "last_active";
  static const C_FOLLOWING = "following";
  static const C_CAN_POST_TEXTS = "can_post_texts";
}