BLOG-104 feat: add order column to post_label and update related queries in PostDbServiceImpl

This commit is contained in:
SquidSpirit 2025-08-02 13:41:14 +08:00
parent 27c23367ad
commit 30ec8651bb
10 changed files with 191 additions and 8 deletions

View File

@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO post_label (\n post_id, label_id, \"order\"\n ) VALUES ($1, $2, $3)\n ON CONFLICT DO NOTHING\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Int4",
"Int4",
"Int4"
]
},
"nullable": []
},
"hash": "0c9effcc24f4319c47898e0ade4e5ccef3c47c014cfcb65805cbf1c625fef1e7"
}

View File

@ -0,0 +1,32 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, name, color\n FROM label\n WHERE deleted_time IS NULL\n ORDER BY id\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
},
{
"ordinal": 1,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "color",
"type_info": "Int8"
}
],
"parameters": {
"Left": []
},
"nullable": [
false,
false,
false
]
},
"hash": "38181c2e36077c546944fbfe124c623706f920fd6b1a9a1cd143ecee6c9d5019"
}

View File

@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "\n UPDATE label\n SET name = $1, color = $2\n WHERE id = $3 AND deleted_time IS NULL\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Int8",
"Int4"
]
},
"nullable": []
},
"hash": "5189bdfd0aa6b4ac478cc48efde4cdbd9cc9605fe0f2c4dc4506827fa0fd2ad6"
}

View File

@ -0,0 +1,34 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, name, color\n FROM label\n WHERE id = $1 AND deleted_time IS NULL\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
},
{
"ordinal": 1,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "color",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Int4"
]
},
"nullable": [
false,
false,
false
]
},
"hash": "a0e1ed95ce9d705653281455cc59e8ed130a496b09dccbf89e919f4c9798e91a"
}

View File

@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "\n DELETE FROM post_label\n WHERE post_id = $1\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Int4"
]
},
"nullable": []
},
"hash": "b084aa65fa3cdb1abdd02fd9e2ade04a71dd98eef245780a6f34f0b72564f63e"
}

View File

@ -0,0 +1,19 @@
{
"db_name": "PostgreSQL",
"query": "\n UPDATE post\n SET \n title = $1, \n description = $2, \n preview_image_url = $3, \n content = $4, \n published_time = $5\n WHERE id = $6\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Text",
"Timestamp",
"Int4"
]
},
"nullable": []
},
"hash": "d0867ba2857fedcdc9a754d0394c4f040d559118d0b9f8b6f4dcd6e6fde5d381"
}

View File

@ -0,0 +1,26 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO post (\n title, description, preview_image_url, content, published_time\n ) VALUES ($1, $2, $3, $4, $5)\n RETURNING id\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Text",
"Timestamp"
]
},
"nullable": [
false
]
},
"hash": "f0c2c0fe0a30790e88449da79c859d4e3829b9b2a6a496c9a429a05fbdb2e30a"
}

View File

@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO label (name, color)\n VALUES ($1, $2)\n RETURNING id\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text",
"Int8"
]
},
"nullable": [
false
]
},
"hash": "f4ef2b4e53389d2bf6a6299fc4e4ffd0df1393e1805ae1c37306b25c721de7e3"
}

View File

@ -58,7 +58,7 @@ impl PostDbService for PostDbServiceImpl {
query_builder.push(r#" AND p.published_time IS NOT NULL"#);
}
query_builder.push(r#" ORDER BY p.id"#);
query_builder.push(r#" ORDER BY p.id, pl."order""#);
let records = query_builder
.build_query_as::<PostInfoWithLabelRecord>()
@ -130,7 +130,7 @@ impl PostDbService for PostDbServiceImpl {
);
query_builder.push_bind(id);
query_builder.push(r#" ORDER BY p.id"#);
query_builder.push(r#" ORDER BY p.id, pl."order""#);
let records = query_builder
.build_query_as::<PostWithLabelRecord>()
@ -207,16 +207,17 @@ impl PostDbService for PostDbServiceImpl {
.await
.map_err(|err| PostError::DatabaseError(err.to_string()))?;
for label_id in label_ids {
for (order, &label_id) in label_ids.iter().enumerate() {
sqlx::query!(
r#"
INSERT INTO post_label (
post_id, label_id
) VALUES ($1, $2)
post_id, label_id, "order"
) VALUES ($1, $2, $3)
ON CONFLICT DO NOTHING
"#,
post_id,
label_id,
order as i32,
)
.execute(&mut *tx)
.await
@ -275,16 +276,17 @@ impl PostDbService for PostDbServiceImpl {
.await
.map_err(|err| PostError::DatabaseError(err.to_string()))?;
for label_id in label_ids {
for (order, &label_id) in label_ids.iter().enumerate() {
sqlx::query!(
r#"
INSERT INTO post_label (
post_id, label_id
) VALUES ($1, $2)
post_id, label_id, "order"
) VALUES ($1, $2, $3)
ON CONFLICT DO NOTHING
"#,
post.id,
label_id,
order as i32,
)
.execute(&mut *tx)
.await

View File

@ -0,0 +1 @@
ALTER TABLE post_label ADD COLUMN "order" INTEGER NOT NULL DEFAULT 0;