Skip to content

Commit 359deed

Browse files
authored
Add deprecated field to event types (svix#1416)
## Motivation Fixes the first bug reported in svix#1415. ## Solution Backport event-type deprecated support.
2 parents 98e4b8f + 6580920 commit 359deed

File tree

7 files changed

+36
-0
lines changed

7 files changed

+36
-0
lines changed

server/openapi.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,10 @@
990990
"example": false,
991991
"type": "boolean"
992992
},
993+
"deprecated": {
994+
"default": false,
995+
"type": "boolean"
996+
},
993997
"description": {
994998
"example": "A user has signed up",
995999
"type": "string"
@@ -1054,6 +1058,9 @@
10541058
"format": "date-time",
10551059
"type": "string"
10561060
},
1061+
"deprecated": {
1062+
"type": "boolean"
1063+
},
10571064
"description": {
10581065
"example": "A user has signed up",
10591066
"type": "string"
@@ -1107,6 +1114,7 @@
11071114
},
11081115
"required": [
11091116
"createdAt",
1117+
"deprecated",
11101118
"description",
11111119
"name",
11121120
"updatedAt"
@@ -1118,6 +1126,9 @@
11181126
"archived": {
11191127
"type": "boolean"
11201128
},
1129+
"deprecated": {
1130+
"type": "boolean"
1131+
},
11211132
"description": {
11221133
"type": "string"
11231134
},
@@ -1164,6 +1175,10 @@
11641175
"example": false,
11651176
"type": "boolean"
11661177
},
1178+
"deprecated": {
1179+
"default": false,
1180+
"type": "boolean"
1181+
},
11671182
"description": {
11681183
"example": "A user has signed up",
11691184
"type": "string"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE eventtype DROP COLUMN deprecated;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE eventtype ADD COLUMN deprecated BOOLEAN DEFAULT FALSE NOT NULL;

server/svix-server/src/db/models/eventtype.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ pub struct Model {
2626
pub org_id: OrganizationId,
2727
pub description: String,
2828
pub deleted: bool,
29+
pub deprecated: bool,
2930
pub schemas: Option<Schema>,
3031
pub name: EventTypeName,
3132
pub feature_flag: Option<FeatureFlag>,

server/svix-server/src/v1/endpoints/event_type.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ pub struct EventTypeIn {
6060
#[serde(default, rename = "archived")]
6161
#[schemars(example = "example_event_archived")]
6262
pub deleted: bool,
63+
#[serde(default)]
64+
pub deprecated: bool,
6365
/// The schema for the event type for a specific version as a JSON schema.
6466
#[schemars(example = "event_type_versioned_schemas_example")]
6567
pub schemas: Option<eventtype::Schema>,
@@ -78,13 +80,15 @@ impl ModelIn for EventTypeIn {
7880
deleted,
7981
schemas,
8082
feature_flag,
83+
deprecated,
8184
} = self;
8285

8386
model.name = Set(name);
8487
model.description = Set(description);
8588
model.deleted = Set(deleted);
8689
model.schemas = Set(schemas);
8790
model.feature_flag = Set(feature_flag);
91+
model.deprecated = Set(deprecated);
8892
}
8993
}
9094

@@ -97,6 +101,8 @@ struct EventTypeUpdate {
97101
#[serde(default, rename = "archived")]
98102
#[schemars(example = "example_event_archived")]
99103
deleted: bool,
104+
#[serde(default)]
105+
deprecated: bool,
100106
/// The schema for the event type for a specific version as a JSON schema.
101107
#[schemars(example = "event_type_versioned_schemas_example")]
102108
schemas: Option<eventtype::Schema>,
@@ -112,12 +118,14 @@ impl ModelIn for EventTypeUpdate {
112118
let EventTypeUpdate {
113119
description,
114120
deleted,
121+
deprecated,
115122
schemas,
116123
feature_flag,
117124
} = self;
118125

119126
model.description = Set(description);
120127
model.deleted = Set(deleted);
128+
model.deprecated = Set(deprecated);
121129
model.schemas = Set(schemas);
122130
model.feature_flag = Set(feature_flag);
123131
}
@@ -137,6 +145,9 @@ struct EventTypePatch {
137145
)]
138146
deleted: UnrequiredField<bool>,
139147

148+
#[serde(default, skip_serializing_if = "UnrequiredField::is_absent")]
149+
deprecated: UnrequiredField<bool>,
150+
140151
#[serde(default, skip_serializing_if = "UnrequiredNullableField::is_absent")]
141152
schemas: UnrequiredNullableField<eventtype::Schema>,
142153

@@ -151,12 +162,14 @@ impl ModelIn for EventTypePatch {
151162
let EventTypePatch {
152163
description,
153164
deleted,
165+
deprecated,
154166
schemas,
155167
feature_flag,
156168
} = self;
157169

158170
patch_field_non_nullable!(model, description);
159171
patch_field_non_nullable!(model, deleted);
172+
patch_field_non_nullable!(model, deprecated);
160173
patch_field_nullable!(model, schemas);
161174
patch_field_nullable!(model, feature_flag);
162175
}
@@ -171,6 +184,7 @@ pub struct EventTypeOut {
171184
#[serde(rename = "archived")]
172185
#[schemars(example = "example_event_archived", default = "example_event_archived")]
173186
pub deleted: bool,
187+
pub deprecated: bool,
174188
/// The schema for the event type for a specific version as a JSON schema.
175189
#[schemars(example = "event_type_versioned_schemas_example")]
176190
pub schemas: Option<eventtype::Schema>,
@@ -196,6 +210,7 @@ impl From<eventtype::Model> for EventTypeOut {
196210
name: model.name,
197211
description: model.description,
198212
deleted: model.deleted,
213+
deprecated: model.deprecated,
199214
schemas: model.schemas,
200215
feature_flag: model.feature_flag,
201216

server/svix-server/tests/it/e2e_event_type.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ async fn test_event_type_feature_flags() {
218218
name: EventTypeName("event-type-with-flag".to_owned()),
219219
description: "test-event-description".to_owned(),
220220
deleted: false,
221+
deprecated: false,
221222
schemas: None,
222223
feature_flag: Some(feature),
223224
},
@@ -233,6 +234,7 @@ async fn test_event_type_feature_flags() {
233234
name: EventTypeName("no-flag-event".to_owned()),
234235
description: "test-event-description".to_owned(),
235236
deleted: false,
237+
deprecated: false,
236238
schemas: None,
237239
feature_flag: None,
238240
},

server/svix-server/tests/it/utils/common_calls.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ pub fn event_type_in(
184184
deleted: false,
185185
schemas: schema.into().map(|s| serde_json::from_value(s).unwrap()),
186186
feature_flag: None,
187+
deprecated: false,
187188
})
188189
}
189190

0 commit comments

Comments
 (0)