Skip to content

Commit 52dcee6

Browse files
committed
refact: split scope & name
1 parent 09d0571 commit 52dcee6

File tree

5 files changed

+21
-14
lines changed

5 files changed

+21
-14
lines changed

api/migrations/20250402143550_create_changes.sql renamed to api/migrations/20250402220510_changes.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ CREATE TYPE change_type AS ENUM (
66
CREATE TABLE changes (
77
seq BIGSERIAL PRIMARY KEY,
88
change_type change_type NOT NULL,
9-
package_id VARCHAR(255) NOT NULL,
9+
scope_name text NOT NULL,
10+
package_name text NOT NULL,
1011
data TEXT NOT NULL,
1112
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
1213
);
1314

14-
CREATE INDEX changes_package_id_idx ON changes (package_id);
15+
CREATE INDEX changes_scope_name_idx ON changes (scope_name, package_name);
1516
CREATE INDEX changes_created_at_idx ON changes (created_at);

api/src/api/changes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ impl From<Change> for ApiChange {
2222
Self {
2323
seq: change.seq,
2424
r#type: change.change_type.to_string(),
25-
id: change.package_id,
25+
id: format!("@jsr/{}__{}", change.scope_name, change.package_name),
2626
changes: serde_json::from_str(&change.data).unwrap(),
2727
}
2828
}

api/src/db/database.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ impl Database {
5656
.await
5757
}
5858

59+
5960
#[instrument(name = "Database::list_changes", skip(self), err)]
6061
pub async fn list_changes(
6162
&self,
@@ -68,7 +69,8 @@ impl Database {
6869
SELECT
6970
seq,
7071
change_type as "change_type: ChangeType",
71-
package_id,
72+
scope_name as "scope_name: ScopeName",
73+
package_name as "package_name: PackageName",
7274
data,
7375
created_at
7476
FROM changes
@@ -83,35 +85,36 @@ impl Database {
8385
.await
8486
}
8587

86-
8788
#[instrument(name = "Database::create_change", skip(self), err)]
8889
pub async fn create_change(
8990
&self,
9091
change_type: ChangeType,
91-
package_id: String,
92+
scope_name: &ScopeName,
93+
package_name: &PackageName,
9294
data: serde_json::Value,
9395
) -> Result<Change> {
9496
sqlx::query_as!(
9597
Change,
9698
r#"
97-
INSERT INTO changes (change_type, package_id, data)
98-
VALUES ($1, $2, $3)
99+
INSERT INTO changes (change_type, scope_name, package_name, data)
100+
VALUES ($1, $2, $3, $4)
99101
RETURNING
100102
seq,
101103
change_type as "change_type: ChangeType",
102-
package_id,
104+
scope_name as "scope_name: ScopeName",
105+
package_name as "package_name: PackageName",
103106
data,
104107
created_at
105108
"#,
106109
change_type as _,
107-
package_id,
110+
scope_name as _,
111+
package_name as _,
108112
data.to_string()
109113
)
110114
.fetch_one(&self.pool)
111115
.await
112116
}
113117

114-
115118
#[instrument(name = "Database::get_user_public", skip(self), err)]
116119
pub async fn get_user_public(&self, id: Uuid) -> Result<Option<UserPublic>> {
117120
sqlx::query_as!(

api/src/db/models.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,14 +847,16 @@ impl std::fmt::Display for ChangeType {
847847
pub struct Change {
848848
pub seq: i64,
849849
pub change_type: ChangeType,
850-
pub package_id: String,
850+
pub scope_name: ScopeName,
851+
pub package_name: PackageName,
851852
pub data: String,
852853
pub created_at: DateTime<Utc>,
853854
}
854855

855856
#[derive(Debug)]
856857
pub struct NewChange<'s> {
857858
pub change_type: ChangeType,
858-
pub package_id: &'s str,
859+
pub scope_name: &'s ScopeName,
860+
pub package_name: &'s PackageName,
859861
pub data: &'s str,
860862
}

api/src/publish.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ async fn process_publishing_task(
244244
async move {
245245
if let Err(e) = db.create_change(
246246
ChangeType::PackageVersionAdded,
247-
format!("@{}/{}", scope, name),
247+
&scope,
248+
&name,
248249
serde_json::json!({
249250
"version": version.to_string(),
250251
}),

0 commit comments

Comments
 (0)