Skip to content

Commit 77e79a8

Browse files
committed
search is working
1 parent 653dba6 commit 77e79a8

5 files changed

Lines changed: 441 additions & 25 deletions

File tree

api/src/routes/sdk.rs

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,26 +41,44 @@ pub async fn register_model(
4141
Json(req): Json<SdkRegisterModelRequest>,
4242
) -> AppResult<Json<SdkRegisterModelResponse>> {
4343
let framework = req.framework.unwrap_or_else(|| "pytorch".into());
44-
let project_id = req.project_id.unwrap_or_else(Uuid::nil);
44+
let project_id: Option<Uuid> = req.project_id.filter(|id| !id.is_nil());
4545
let workspace_id: Option<Uuid> = None;
4646

47-
// Check if a model with the same name (or registry_name) already exists in this project
47+
// Check if a model with the same name (or registry_name) already exists
4848
let existing: Option<crate::models::model::Model> = if req.registry_name.is_some() {
49-
sqlx::query_as(
50-
"SELECT * FROM models WHERE registry_name = $1 AND project_id = $2 ORDER BY version DESC LIMIT 1"
51-
)
52-
.bind(&req.registry_name)
53-
.bind(project_id)
54-
.fetch_optional(&state.db)
55-
.await?
49+
if let Some(pid) = project_id {
50+
sqlx::query_as(
51+
"SELECT * FROM models WHERE registry_name = $1 AND project_id = $2 ORDER BY version DESC LIMIT 1"
52+
)
53+
.bind(&req.registry_name)
54+
.bind(pid)
55+
.fetch_optional(&state.db)
56+
.await?
57+
} else {
58+
sqlx::query_as(
59+
"SELECT * FROM models WHERE registry_name = $1 AND project_id IS NULL ORDER BY version DESC LIMIT 1"
60+
)
61+
.bind(&req.registry_name)
62+
.fetch_optional(&state.db)
63+
.await?
64+
}
5665
} else {
57-
sqlx::query_as(
58-
"SELECT * FROM models WHERE name = $1 AND project_id = $2 ORDER BY version DESC LIMIT 1"
59-
)
60-
.bind(&req.name)
61-
.bind(project_id)
62-
.fetch_optional(&state.db)
63-
.await?
66+
if let Some(pid) = project_id {
67+
sqlx::query_as(
68+
"SELECT * FROM models WHERE name = $1 AND project_id = $2 ORDER BY version DESC LIMIT 1"
69+
)
70+
.bind(&req.name)
71+
.bind(pid)
72+
.fetch_optional(&state.db)
73+
.await?
74+
} else {
75+
sqlx::query_as(
76+
"SELECT * FROM models WHERE name = $1 AND project_id IS NULL ORDER BY version DESC LIMIT 1"
77+
)
78+
.bind(&req.name)
79+
.fetch_optional(&state.db)
80+
.await?
81+
}
6482
};
6583

6684
let from_registry = req.registry_name.is_some();
@@ -351,7 +369,7 @@ pub async fn create_dataset(
351369

352370
let dataset_id = Uuid::new_v4();
353371
let format = req.format.unwrap_or_else(|| "csv".into());
354-
let project_id = req.project_id.unwrap_or_else(Uuid::nil);
372+
let project_id: Option<Uuid> = req.project_id.filter(|id| !id.is_nil());
355373

356374
// Decode base64
357375
let bytes = base64::engine::general_purpose::STANDARD
@@ -592,12 +610,12 @@ pub async fn create_features(
592610
AuthUser(claims): AuthUser,
593611
Json(req): Json<SdkCreateFeaturesRequest>,
594612
) -> AppResult<Json<serde_json::Value>> {
595-
let project_id = req.project_id.unwrap_or_else(Uuid::nil);
613+
let project_id: Option<Uuid> = req.project_id.filter(|id| !id.is_nil());
596614
let entity = req.entity.unwrap_or_else(|| "default".into());
597615

598616
// Create or find feature group
599617
let group_id: Uuid = match sqlx::query_scalar::<_, Uuid>(
600-
"SELECT id FROM feature_groups WHERE name = $1 AND project_id = $2"
618+
"SELECT id FROM feature_groups WHERE name = $1 AND (project_id = $2 OR ($2::uuid IS NULL AND project_id IS NULL))"
601619
)
602620
.bind(&req.group_name)
603621
.bind(project_id)
@@ -708,7 +726,7 @@ pub async fn create_hyperparameters(
708726
Json(req): Json<CreateHpSetRequest>,
709727
) -> AppResult<Json<HyperparameterSet>> {
710728
let id = Uuid::new_v4();
711-
let project_id = req.project_id.unwrap_or_else(Uuid::nil);
729+
let project_id: Option<Uuid> = req.project_id.filter(|id| !id.is_nil());
712730

713731
let hp: HyperparameterSet = sqlx::query_as(
714732
"INSERT INTO hyperparameter_sets (id, project_id, name, description, parameters, model_id, created_by, created_at, updated_at)
@@ -1117,7 +1135,7 @@ pub async fn create_pipeline(
11171135
Json(req): Json<CreatePipelineRequest>,
11181136
) -> AppResult<Json<Pipeline>> {
11191137
let pipeline_id = Uuid::new_v4();
1120-
let project_id = req.project_id.unwrap_or_else(Uuid::nil);
1138+
let project_id: Option<Uuid> = req.project_id.filter(|id| !id.is_nil());
11211139

11221140
let pipeline: Pipeline = sqlx::query_as(
11231141
"INSERT INTO pipelines (id, project_id, name, description, status, created_by, created_at, updated_at)

tests/e2e/playwright-report/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)