feat(themes): Add theme_name and entity_type in themes table (#6621)

This commit is contained in:
Mani Chandra
2024-11-21 23:36:54 +05:30
committed by GitHub
parent 9bc363f140
commit bf13c16109
8 changed files with 44 additions and 20 deletions

View File

@ -4,11 +4,12 @@ use crate::id_type;
/// Currently being used for theme related APIs and queries.
#[derive(Debug)]
pub enum ThemeLineage {
/// Tenant lineage variant
Tenant {
/// tenant_id: String
tenant_id: String,
},
// TODO: Add back Tenant variant when we introduce Tenant Variant in EntityType
// /// Tenant lineage variant
// Tenant {
// /// tenant_id: String
// tenant_id: String,
// },
/// Org lineage variant
Organization {
/// tenant_id: String

View File

@ -3,7 +3,7 @@ use diesel::{
associations::HasTable,
pg::Pg,
sql_types::{Bool, Nullable},
BoolExpressionMethods, ExpressionMethods, NullableExpressionMethods,
BoolExpressionMethods, ExpressionMethods,
};
use crate::{
@ -27,14 +27,15 @@ impl Theme {
+ 'static,
> {
match lineage {
ThemeLineage::Tenant { tenant_id } => Box::new(
dsl::tenant_id
.eq(tenant_id)
.and(dsl::org_id.is_null())
.and(dsl::merchant_id.is_null())
.and(dsl::profile_id.is_null())
.nullable(),
),
// TODO: Add back Tenant variant when we introduce Tenant Variant in EntityType
// ThemeLineage::Tenant { tenant_id } => Box::new(
// dsl::tenant_id
// .eq(tenant_id)
// .and(dsl::org_id.is_null())
// .and(dsl::merchant_id.is_null())
// .and(dsl::profile_id.is_null())
// .nullable(),
// ),
ThemeLineage::Organization { tenant_id, org_id } => Box::new(
dsl::tenant_id
.eq(tenant_id)

View File

@ -1280,6 +1280,10 @@ diesel::table! {
profile_id -> Nullable<Varchar>,
created_at -> Timestamp,
last_modified_at -> Timestamp,
#[max_length = 64]
entity_type -> Varchar,
#[max_length = 64]
theme_name -> Varchar,
}
}

View File

@ -1227,6 +1227,10 @@ diesel::table! {
profile_id -> Nullable<Varchar>,
created_at -> Timestamp,
last_modified_at -> Timestamp,
#[max_length = 64]
entity_type -> Varchar,
#[max_length = 64]
theme_name -> Varchar,
}
}

View File

@ -1,3 +1,4 @@
use common_enums::EntityType;
use common_utils::id_type;
use diesel::{Identifiable, Insertable, Queryable, Selectable};
use time::PrimitiveDateTime;
@ -14,6 +15,8 @@ pub struct Theme {
pub profile_id: Option<id_type::ProfileId>,
pub created_at: PrimitiveDateTime,
pub last_modified_at: PrimitiveDateTime,
pub entity_type: EntityType,
pub theme_name: String,
}
#[derive(Clone, Debug, Insertable, router_derive::DebugAsDisplay)]
@ -26,4 +29,6 @@ pub struct ThemeNew {
pub profile_id: Option<id_type::ProfileId>,
pub created_at: PrimitiveDateTime,
pub last_modified_at: PrimitiveDateTime,
pub entity_type: EntityType,
pub theme_name: String,
}

View File

@ -65,12 +65,13 @@ impl ThemeInterface for Store {
fn check_theme_with_lineage(theme: &storage::Theme, lineage: &ThemeLineage) -> bool {
match lineage {
ThemeLineage::Tenant { tenant_id } => {
&theme.tenant_id == tenant_id
&& theme.org_id.is_none()
&& theme.merchant_id.is_none()
&& theme.profile_id.is_none()
}
// TODO: Add back Tenant variant when we introduce Tenant Variant in EntityType
// ThemeLineage::Tenant { tenant_id } => {
// &theme.tenant_id == tenant_id
// && theme.org_id.is_none()
// && theme.merchant_id.is_none()
// && theme.profile_id.is_none()
// }
ThemeLineage::Organization { tenant_id, org_id } => {
&theme.tenant_id == tenant_id
&& theme
@ -156,6 +157,8 @@ impl ThemeInterface for MockDb {
profile_id: new_theme.profile_id,
created_at: new_theme.created_at,
last_modified_at: new_theme.last_modified_at,
entity_type: new_theme.entity_type,
theme_name: new_theme.theme_name,
};
themes.push(theme.clone());

View File

@ -0,0 +1,3 @@
-- This file should undo anything in `up.sql`
ALTER TABLE themes DROP COLUMN IF EXISTS entity_type;
ALTER TABLE themes DROP COLUMN IF EXISTS theme_name;

View File

@ -0,0 +1,3 @@
-- Your SQL goes here
ALTER TABLE themes ADD COLUMN IF NOT EXISTS entity_type VARCHAR(64) NOT NULL;
ALTER TABLE themes ADD COLUMN IF NOT EXISTS theme_name VARCHAR(64) NOT NULL;