111 lines
4.3 KiB
Rust
111 lines
4.3 KiB
Rust
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
use serde_json::Value;
|
|
use tokio_postgres::{Error, Row};
|
|
use uuid::Uuid;
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct Interviewee {
|
|
pub id: Uuid,
|
|
pub primary_category_id: Option<Uuid>,
|
|
pub display_name: String,
|
|
pub real_name: Option<String>,
|
|
pub brand_name: Option<String>,
|
|
pub normalized_display_name: String,
|
|
pub normalized_real_name: Option<String>,
|
|
pub normalized_brand_name: Option<String>,
|
|
pub professional_summary: String,
|
|
pub public_bio: String,
|
|
pub profession: Option<String>,
|
|
pub creator_content_type: Option<String>,
|
|
pub creator_audience: Option<String>,
|
|
pub professional_image_asset_id: Option<Uuid>,
|
|
pub personal_image_asset_id: Option<Uuid>,
|
|
pub status: String,
|
|
pub dedup_review_status: String,
|
|
pub created_in_run_id: Option<Uuid>,
|
|
pub metadata: Value,
|
|
pub best_email: Option<String>,
|
|
pub best_phone: Option<String>,
|
|
pub best_contacts_computed_at: Option<DateTime<Utc>>,
|
|
pub created_at: DateTime<Utc>,
|
|
pub updated_at: DateTime<Utc>,
|
|
pub deleted_at: Option<DateTime<Utc>>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct NewInterviewee {
|
|
pub primary_category_id: Option<Uuid>,
|
|
pub display_name: String,
|
|
pub real_name: Option<String>,
|
|
pub brand_name: Option<String>,
|
|
pub normalized_display_name: String,
|
|
pub normalized_real_name: Option<String>,
|
|
pub normalized_brand_name: Option<String>,
|
|
#[serde(default)]
|
|
pub professional_summary: String,
|
|
#[serde(default)]
|
|
pub public_bio: String,
|
|
pub profession: Option<String>,
|
|
pub creator_content_type: Option<String>,
|
|
pub creator_audience: Option<String>,
|
|
pub professional_image_asset_id: Option<Uuid>,
|
|
pub personal_image_asset_id: Option<Uuid>,
|
|
pub created_in_run_id: Option<Uuid>,
|
|
#[serde(default)]
|
|
pub metadata: Value,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
pub struct IntervieweePatch {
|
|
pub primary_category_id: Option<Uuid>,
|
|
pub display_name: Option<String>,
|
|
pub real_name: Option<String>,
|
|
pub brand_name: Option<String>,
|
|
pub normalized_display_name: Option<String>,
|
|
pub normalized_real_name: Option<String>,
|
|
pub normalized_brand_name: Option<String>,
|
|
pub professional_summary: Option<String>,
|
|
pub public_bio: Option<String>,
|
|
pub profession: Option<String>,
|
|
pub creator_content_type: Option<String>,
|
|
pub creator_audience: Option<String>,
|
|
pub professional_image_asset_id: Option<Uuid>,
|
|
pub personal_image_asset_id: Option<Uuid>,
|
|
pub status: Option<String>,
|
|
pub dedup_review_status: Option<String>,
|
|
pub metadata: Option<Value>,
|
|
}
|
|
|
|
impl Interviewee {
|
|
pub fn from_row(row: &Row) -> Result<Self, Error> {
|
|
Ok(Self {
|
|
id: row.try_get("id")?,
|
|
primary_category_id: row.try_get("primary_category_id")?,
|
|
display_name: row.try_get("display_name")?,
|
|
real_name: row.try_get("real_name")?,
|
|
brand_name: row.try_get("brand_name")?,
|
|
normalized_display_name: row.try_get("normalized_display_name")?,
|
|
normalized_real_name: row.try_get("normalized_real_name")?,
|
|
normalized_brand_name: row.try_get("normalized_brand_name")?,
|
|
professional_summary: row.try_get("professional_summary")?,
|
|
public_bio: row.try_get("public_bio")?,
|
|
profession: row.try_get("profession")?,
|
|
creator_content_type: row.try_get("creator_content_type")?,
|
|
creator_audience: row.try_get("creator_audience")?,
|
|
professional_image_asset_id: row.try_get("professional_image_asset_id")?,
|
|
personal_image_asset_id: row.try_get("personal_image_asset_id")?,
|
|
status: row.try_get("status")?,
|
|
dedup_review_status: row.try_get("dedup_review_status")?,
|
|
created_in_run_id: row.try_get("created_in_run_id")?,
|
|
metadata: row.try_get("metadata")?,
|
|
best_email: row.try_get("best_email")?,
|
|
best_phone: row.try_get("best_phone")?,
|
|
best_contacts_computed_at: row.try_get("best_contacts_computed_at")?,
|
|
created_at: row.try_get("created_at")?,
|
|
updated_at: row.try_get("updated_at")?,
|
|
deleted_at: row.try_get("deleted_at")?,
|
|
})
|
|
}
|
|
}
|