use chrono::{DateTime, Utc};
use sqlx::types::Json;
use fully_pub::fully_pub;

use generator_attr::{sql_generator_model, SqlGeneratorDerive};

#[derive(sqlx::Type, Clone, Debug, PartialEq)]
enum UserStatus {
    Disabled,
    Invited,
    Active,
    Archived
}

struct RandomStruct {
}

#[derive(SqlGeneratorDerive, sqlx::FromRow, Debug, Clone)]
#[sql_generator_model(table_name="usersss")]
#[fully_pub]
struct User {
    #[sql_generator_field(is_primary=true)]
    id: String,
    #[sql_generator_field(is_unique=true)]
    handle: String,
    full_name: Option<String>,
    prefered_color: Option<i64>,
    last_login_at: Option<DateTime<Utc>>,
    status: UserStatus,
    groups: Json<Vec<String>>,
    avatar_bytes: Vec<u8>
}