// @generated automatically by Diesel CLI.

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    comments (id) {
        id -> Uuid,
        discussion_id -> Uuid,
        author -> Nullable<Uuid>,
        contents -> Text,
        creation_ip -> Inet,
        creation_date -> Timestamptz,
        cached_html -> Text,
        uniq -> Int8,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    contributors (repo, key) {
        repo -> Uuid,
        key -> Bytea,
        revision -> Timestamptz,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    discussion_changes (id) {
        id -> Uuid,
        change -> Text,
        discussion -> Uuid,
        pushed_by -> Nullable<Uuid>,
        added -> Timestamptz,
        removed -> Nullable<Timestamptz>,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    discussion_subscriptions (id) {
        id -> Uuid,
        user_id -> Uuid,
        discussion_id -> Uuid,
        start_date -> Nullable<Timestamptz>,
        end_date -> Nullable<Timestamptz>,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    discussion_tags (id) {
        id -> Uuid,
        discussion -> Uuid,
        tag -> Nullable<Uuid>,
        author -> Nullable<Uuid>,
        date -> Timestamptz,
        active -> Bool,
        addition -> Bool,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    discussions (id) {
        id -> Uuid,
        repository_id -> Uuid,
        title -> Text,
        author -> Nullable<Uuid>,
        creation_ip -> Inet,
        creation_date -> Timestamptz,
        number -> Int4,
        pull_to_branch -> Nullable<Text>,
        first_patch -> Nullable<Int4>,
        n_changes -> Int4,
        changes -> Int4,
        closed -> Nullable<Timestamptz>,
        uniq -> Int8,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    email_log (time) {
        time -> Timestamptz,
        discussion -> Uuid,
        email -> Text,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    hooks (id) {
        id -> Uuid,
        repository -> Uuid,
        author -> Uuid,
        creation_date -> Timestamptz,
        active -> Bool,
        secret -> Text,
        url -> Text,
        action -> Nullable<Int8>,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    old_logins (login) {
        login -> Citext,
        user_id -> Nullable<Uuid>,
        retired -> Nullable<Timestamptz>,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    password_failures (date) {
        date -> Timestamptz,
        ip -> Inet,
        login -> Text,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    permissions (user_id, repo_id) {
        user_id -> Uuid,
        repo_id -> Uuid,
        perm -> Int8,
        start_date -> Timestamptz,
        end_date -> Nullable<Timestamptz>,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    profile_pics (user_id) {
        user_id -> Uuid,
        updated -> Timestamptz,
        format -> Text,
        image -> Bytea,
        small -> Bytea,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    publickeys (id) {
        id -> Uuid,
        user_id -> Uuid,
        publickey -> Text,
        bin -> Bytea,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    repositories (id) {
        id -> Uuid,
        owner -> Uuid,
        name -> Text,
        creation_ip -> Text,
        fork_origin -> Nullable<Uuid>,
        creation_date -> Timestamptz,
        next_discussion_number -> Int4,
        default_channel -> Text,
        description -> Nullable<Text>,
        is_active -> Bool,
        max_changes_size -> Int8,
        n_followers -> Int8,
        last_pushed -> Timestamptz,
        last_discussed -> Timestamptz,
        rank -> Float8,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    repository_followers (repository_id, user_id) {
        repository_id -> Uuid,
        user_id -> Uuid,
        start_date -> Nullable<Timestamptz>,
        end_date -> Nullable<Timestamptz>,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    signingkeys (public_key) {
        public_key -> Bytea,
        user_id -> Uuid,
        algorithm -> Keyalgorithm,
        signature -> Bytea,
        expires -> Nullable<Timestamptz>,
        added -> Timestamptz,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    tags (id) {
        id -> Uuid,
        repository_id -> Uuid,
        name -> Text,
        creation_date -> Timestamptz,
        deletion_date -> Nullable<Timestamptz>,
        color -> Int4,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    tokens (token) {
        token -> Bytea,
        user_id -> Uuid,
        date -> Timestamp,
    }
}

diesel::table! {
    use diesel::sql_types::*;
    use diesel::pg::sql_types::*;
    use crate::{Keyalgorithm};

    users (id) {
        id -> Uuid,
        login -> Citext,
        password -> Text,
        email -> Citext,
        email_is_invalid -> Nullable<Bool>,
        creation_date -> Timestamptz,
        is_active -> Bool,
        name -> Nullable<Text>,
        creation_ip -> Nullable<Inet>,
        last_identity_change -> Nullable<Timestamptz>,
        storage_used -> Nullable<Int8>,
        suspended -> Bool,
    }
}

diesel::joinable!(comments -> discussions (discussion_id));
diesel::joinable!(comments -> users (author));
diesel::joinable!(contributors -> repositories (repo));
diesel::joinable!(discussion_changes -> discussions (discussion));
diesel::joinable!(discussion_changes -> users (pushed_by));
diesel::joinable!(discussion_subscriptions -> discussions (discussion_id));
diesel::joinable!(discussion_subscriptions -> users (user_id));
diesel::joinable!(discussion_tags -> discussions (discussion));
diesel::joinable!(discussion_tags -> tags (tag));
diesel::joinable!(discussion_tags -> users (author));
diesel::joinable!(discussions -> repositories (repository_id));
diesel::joinable!(discussions -> users (author));
diesel::joinable!(email_log -> discussions (discussion));
diesel::joinable!(hooks -> repositories (repository));
diesel::joinable!(hooks -> users (author));
diesel::joinable!(permissions -> repositories (repo_id));
diesel::joinable!(permissions -> users (user_id));
diesel::joinable!(profile_pics -> users (user_id));
diesel::joinable!(publickeys -> users (user_id));
diesel::joinable!(repositories -> users (owner));
diesel::joinable!(repository_followers -> repositories (repository_id));
diesel::joinable!(repository_followers -> users (user_id));
diesel::joinable!(signingkeys -> users (user_id));
diesel::joinable!(tags -> repositories (repository_id));
diesel::joinable!(tokens -> users (user_id));

diesel::allow_tables_to_appear_in_same_query!(
    comments,
    contributors,
    discussion_changes,
    discussion_subscriptions,
    discussion_tags,
    discussions,
    email_log,
    hooks,
    old_logins,
    password_failures,
    permissions,
    profile_pics,
    publickeys,
    repositories,
    repository_followers,
    signingkeys,
    tags,
    tokens,
    users,
);