{"id":71120,"date":"2024-07-28T05:46:45","date_gmt":"2024-07-28T02:16:45","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/"},"modified":"2024-07-28T05:46:45","modified_gmt":"2024-07-28T02:16:45","slug":"rusty-recipies-sqlx-uuid-477m","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/","title":{"rendered":"\u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0632\u0646\u06af \u0632\u062f\u0647: sqlx + Uuid"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u0628\u06cc \u062d\u0648\u0635\u0644\u0647 &#8211; \u0627\u06cc\u0646\u062c\u0627 \u0644\u06cc\u0646\u06a9 \u06a9\u062f \u0645\u0646 \u062f\u0631 GitHub \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0628\u0642\u06cc\u0647 &#8211; \u0628\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>  \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647: sqlx-postgres<\/p>\n<p>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 sqlx \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u06cc\u06a9 db \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u0648 \u0639\u0644\u06cc\u0631\u063a\u0645 \u0622\u0646\u0686\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627\u0648\u0631 \u06a9\u0646\u062f\u060c \u0646\u0633\u062e\u0647 \u0641\u0639\u0644\u06cc (0.8.0 \u062a\u0627 \u0644\u062d\u0638\u0647 \u0646\u06af\u0627\u0631\u0634 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647) \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. Uuid\u062e\u0648\u0628 \u0627\u0633\u062a<\/p>\n<p>  Uuid \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 i64<\/p>\n<p>\u0645\u0646 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u062e\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 Rust \u0628\u0647 Postgres DB \u0628\u0648\u062f\u0645.  \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a \u06a9\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062f\u0631 \u0622\u0646\u062c\u0627 \u062d\u0644 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f &#8211; \u062f\u0631\u062c \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0634\u0646\u0627\u0633\u0647 \u062f\u0631 Rust \u06cc\u06a9 Uuid (uuid \u062f\u0631 db)\u060c \u0646\u0647 a i64 (bigserial \u062f\u0631 db).<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u0646 \u0627\u0633\u062a:<\/p>\n<p>#[derive(Debug, FromRow)]\npub struct Message {<br \/>\n    pub id: Uuid, \/\/<br \/>\n    pub content: String,<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0646 \u0633\u0639\u06cc \u06a9\u0631\u062f\u0645 \u0645\u0631\u0627\u062d\u0644 \u0645\u0634\u0627\u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0627\u0631\u0646\u062f \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0645 i64 \u0628\u0631\u0627\u06cc id\u060c \u0627\u0645\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 rust \u0631\u0627\u0636\u06cc \u0646\u0628\u0648\u062f \u0627\u0644\u0628\u062a\u0647.\u067e\u0633 \u0627\u0632 \u062e\u0648\u0627\u0646\u062f\u0646 \u0686\u0646\u062f \u0628\u062d\u062b \u0622\u0646\u0644\u0627\u06cc\u0646 \u0648 \u06a9\u0645\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u060c \u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u0628\u0647 \u0622\u0646\u0686\u0647 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u0628\u0631\u0633\u0645 \u0648 \u0645\u0639\u0644\u0648\u0645 \u0634\u062f \u06a9\u0647 \u0622\u0646\u0642\u062f\u0631\u0647\u0627 \u0647\u0645 \u0633\u062e\u062a \u0646\u06cc\u0633\u062a!\u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u0622\u0646 \u0628\u0647 \u0646\u0641\u0639 \u062f\u06cc\u06af\u0631\u0627\u0646 \ud83d\ude09<\/p>\n<p>  \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0648\u0644 \u0646\u0633\u0628\u062a \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u0646\u06af\u200c\u0632\u062f\u06af\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f (\u0648 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 i64\u0645\u0646 \u0647\u0645 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645\u060c \u0627\u0645\u0627 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 a Uuid :\u067e<\/p>\n<p>\u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u0645\u0627 i64 \u0628\u0627\u0634\u062f \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<p>async fn init_messages_table(pool: &amp;PoolPostgres&gt;) -&gt; () {<br \/>\n    sqlx::query(<br \/>\n        r#&#8221;<br \/>\n    CREATE TABLE IF NOT EXISTS messages (<br \/>\n      id bigserial,<br \/>\n      content text<br \/>\n    );&#8221;#,<br \/>\n    )<br \/>\n    .execute(pool)<br \/>\n    .await<br \/>\n    .expect(&#8220;postgres messages_table creation error&#8221;);<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u0645\u0627 a \u0628\u0627\u0634\u062f Uuid:<\/p>\n<p>async fn init_messages_table(pool: &amp;PoolPostgres&gt;) -&gt; () {<br \/>\n    sqlx::query(<br \/>\n        r#&#8221;<br \/>\n    CREATE TABLE IF NOT EXISTS messages (<br \/>\n      id uuid,<br \/>\n      content text<br \/>\n    );&#8221;#,<br \/>\n    )<br \/>\n    .execute(pool)<br \/>\n    .await<br \/>\n    .expect(&#8220;postgres messages_table creation error&#8221;);<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f: id uuid \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062e\u0627\u0644\u0641 id bigserial.  \u0645\u0631\u062a\u0628!<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f\/\u062f\u0631\u062c \u062f\u0627\u062f\u0647<\/p>\n<p>\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062f\u0631\u062c \u06cc\u06a9 \u0631\u062f\u06cc\u0641 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u0645\u0627 \u06cc\u06a9 \u0627\u0633\u062a i64:<\/p>\n<p>let row: (i64,) =<br \/>\n        sqlx::query_as(&#8220;insert into messages (content) values ($1) returning id&#8221;)<br \/>\n            .bind(req.content.to_owned())<br \/>\n            .fetch_one(&amp;data.db_pool)<br \/>\n            .await<br \/>\n            .expect(&#8220;postgres insertion error&#8221;);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f were ID \u06cc\u06a9 \u0627\u0633\u062a Uuid\u060c \u062f\u0631 \u0639\u0648\u0636 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645:<\/p>\n<p>    let id = sqlx::types::Uuid::from_u128(uuid::Uuid::new_v4().as_u128());<br \/>\n    let row: (sqlx::types::Uuid,) =<br \/>\n        sqlx::query_as(&#8220;insert into messages (id, content) values ($1, $2) returning id&#8221;)<br \/>\n            .bind(id.to_owned())<br \/>\n            .bind(req.content.to_owned())<br \/>\n            .fetch_one(&amp;data.db_pool)<br \/>\n            .await<br \/>\n            .expect(&#8220;postgres insertion error&#8221;);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0647 \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0641\u0627\u0648\u062a \u0627\u0635\u0644\u06cc \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f: <\/p>\n<p>\u0646\u0648\u0639 \u0628\u0627\u0632\u06af\u0634\u062a \u0627\u0632 \u0631\u062f\u06cc\u0641 \u0627\u0633\u062a (sqlx::types::Uuid,) \u0628\u062c\u0627\u06cc(i64,)- \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f.<br \/>\n\u0634\u0646\u0627\u0633\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0632 Rust \u0645\u06cc \u0622\u06cc\u062f &#8211; \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 Uuid \u0628\u0631\u062e\u0644\u0627\u0641 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc\u06cc \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 id \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0634\u0646\u0627\u0633\u0647 \u0631\u062f\u06cc\u0641 \u0642\u0628\u0644\u06cc \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc \u06a9\u0646\u062f.\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0645\u0642\u062f\u0627\u0631 id \u0631\u0627 \u0646\u0645\u06cc \u062f\u0627\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0632 Rust \u067e\u0627\u0633 \u06a9\u0646\u06cc\u0645.  \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0645\u0627 \u06cc\u06a9 \u0628\u062e\u0634 \u0627\u0636\u0627\u0641\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0648 \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f- Uuid \u0645\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n<p>  \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/p>\n<p>\u0645\u0646 \u0686\u0646\u062f \u06a9\u062f \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u062f\u06cc\u062f\u0645 \u06a9\u0647 AS &#8220;id: Uuid&#8221; \u0631\u0627 \u0628\u0647 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f:<\/p>\n<p>sqlx::query_as(&#8220;insert into messages (id, content) values ($1, $2) returning id AS \\&#8221;id: Uuid\\&#8221;&#8221;)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0645\u0627 \u0645\u0639\u0644\u0648\u0645 \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0627 \u062c\u0631\u06cc\u0627\u0646 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a sqlx \u0646\u0633\u062e\u0647<\/p>\n<p>  \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f<\/p>\n<p>\u062a\u0639\u062c\u0628!  \u0648\u0642\u062a\u06cc \u0646\u0648\u0628\u062a \u0628\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u0646\u062c\u0627\u0645 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0646\u062f\u0627\u0634\u062a\u0645:<\/p>\n<p>    let select_query = sqlx::query_as::_, Message&gt;(&#8220;SELECT id, content FROM messages&#8221;);<br \/>\n    let messages: VecMessage&gt; = select_query<br \/>\n        .fetch_all(&amp;data.db_pool)<br \/>\n        .await<br \/>\n        .expect(&#8220;postgres selection error&#8221;);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06a9\u0647 \u062c\u0627\u062f\u0648\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 sqlx \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0646\u0648\u0639 \u0645\u0627 \u0631\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0646\u062f id!<\/p>\n<p>  \u06cc\u06a9 \u0644\u062d\u0638\u0647 \u0634\u06a9\u0631\u06af\u0632\u0627\u0631\u06cc<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0634\u0645\u0627\u060c \u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0628\u0631\u062e\u0648\u0631\u062f \u06a9\u0631\u062f \u0648 \u0628\u0647 \u0622\u0646 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0645\u0646 \u062a\u0627\u0632\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0645\u060c \u067e\u0633 \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0622\u06cc\u0627 \u0634\u0645\u0627 \u06cc\u06a9 \u0647\u0645\u0648\u0637\u0646\u0627\u0646 \u0631\u0648\u0633\u062a\u0627\u06cc\u06cc \u0647\u0633\u062a\u06cc\u062f\u061f \u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0631\u062f\u061f\u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u067e\u062e\u062a \u0632\u0646\u06af \u0632\u062f\u0647 \u0628\u0647 \u0686\u0647 \u0645\u0633\u0627\u0626\u0644 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0632\u0646\u06af \u067e\u0631\u062f\u0627\u062e\u062a\u0647 \u0634\u0648\u062f\u061f<\/p>\n<p>\u06cc\u0627\u062f\u0622\u0648\u0631\u06cc &#8211; \u06a9\u062f \u0627\u06cc\u0646 \u067e\u0633\u062a \u062f\u0631 GitHub \u0645\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<div data-article-id=\"1938567\" id=\"article-body\">\n<p>\u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u0628\u06cc \u062d\u0648\u0635\u0644\u0647 &#8211; \u0627\u06cc\u0646\u062c\u0627 \u0644\u06cc\u0646\u06a9 \u06a9\u062f \u0645\u0646 \u062f\u0631 GitHub \u0627\u0633\u062a. <br \/>\u0628\u0631\u0627\u06cc \u0628\u0642\u06cc\u0647 &#8211; \u0628\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87_%D9%85%D9%88%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_sqlx-postgres\" >\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647: sqlx-postgres<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#Uuid_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_i64\" >Uuid \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 i64<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#%DB%8C%DA%A9_%D8%AC%D8%AF%D9%88%D9%84_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF%D8%AF%D8%B1%D8%AC_%D8%AF%D8%A7%D8%AF%D9%87\" >\u0627\u06cc\u062c\u0627\u062f\/\u062f\u0631\u062c \u062f\u0627\u062f\u0647<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#%D8%AA%D9%88%D8%AC%D9%87_%D8%AF%D8%A7%D8%B4%D8%AA%D9%87_%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF\" >\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%A8%D8%AE%D9%88%D8%A7%D9%86%DB%8C%D8%AF\" >\u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/rusty-recipies-sqlx-uuid-477m\/#%DB%8C%DA%A9_%D9%84%D8%AD%D8%B8%D9%87_%D8%B4%DA%A9%D8%B1%DA%AF%D8%B2%D8%A7%D8%B1%DB%8C\" >\u06cc\u06a9 \u0644\u062d\u0638\u0647 \u0634\u06a9\u0631\u06af\u0632\u0627\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h4><span class=\"ez-toc-section\" id=\"%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87_%D9%85%D9%88%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_sqlx-postgres\"><\/span>\n<p>  \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647: sqlx-postgres<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 sqlx \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u06cc\u06a9 db \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u0648 \u0639\u0644\u06cc\u0631\u063a\u0645 \u0622\u0646\u0686\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627\u0648\u0631 \u06a9\u0646\u062f\u060c \u0646\u0633\u062e\u0647 \u0641\u0639\u0644\u06cc (0.8.0 \u062a\u0627 \u0644\u062d\u0638\u0647 \u0646\u06af\u0627\u0631\u0634 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647) \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. <code>Uuid<\/code>\u062e\u0648\u0628 \u0627\u0633\u062a<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Uuid_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_i64\"><\/span>\n<p>  Uuid \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 i64<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u062e\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 Rust \u0628\u0647 Postgres DB \u0628\u0648\u062f\u0645.  \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a \u06a9\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062f\u0631 \u0622\u0646\u062c\u0627 \u062d\u0644 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f &#8211; \u062f\u0631\u062c \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0634\u0646\u0627\u0633\u0647 \u062f\u0631 Rust \u06cc\u06a9 <code>Uuid<\/code> (<code>uuid<\/code> \u062f\u0631 db)\u060c \u0646\u0647 a <code>i64<\/code> (<code>bigserial<\/code> \u062f\u0631 db).<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u0646 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">FromRow)]<\/span>\n<span class=\"k\">pub<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">Message<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">pub<\/span> <span class=\"n\">id<\/span><span class=\"p\">:<\/span> <span class=\"n\">Uuid<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ \n    <span class=\"k\">pub<\/span> <span class=\"n\">content<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0646 \u0633\u0639\u06cc \u06a9\u0631\u062f\u0645 \u0645\u0631\u0627\u062d\u0644 \u0645\u0634\u0627\u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0627\u0631\u0646\u062f \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0645 <code>i64<\/code> \u0628\u0631\u0627\u06cc id\u060c \u0627\u0645\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 rust \u0631\u0627\u0636\u06cc \u0646\u0628\u0648\u062f \u0627\u0644\u0628\u062a\u0647.<br \/>\u067e\u0633 \u0627\u0632 \u062e\u0648\u0627\u0646\u062f\u0646 \u0686\u0646\u062f \u0628\u062d\u062b \u0622\u0646\u0644\u0627\u06cc\u0646 \u0648 \u06a9\u0645\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u060c \u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u0628\u0647 \u0622\u0646\u0686\u0647 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u0628\u0631\u0633\u0645 \u0648 \u0645\u0639\u0644\u0648\u0645 \u0634\u062f \u06a9\u0647 \u0622\u0646\u0642\u062f\u0631\u0647\u0627 \u0647\u0645 \u0633\u062e\u062a \u0646\u06cc\u0633\u062a!<br \/>\u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u0622\u0646 \u0628\u0647 \u0646\u0641\u0639 \u062f\u06cc\u06af\u0631\u0627\u0646 \ud83d\ude09<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D8%AC%D8%AF%D9%88%D9%84_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u0628\u0647\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0648\u0644 \u0646\u0633\u0628\u062a \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062f \u0632\u0646\u06af\u200c\u0632\u062f\u06af\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f (\u0648 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 <code>i64<\/code>\u0645\u0646 \u0647\u0645 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645\u060c \u0627\u0645\u0627 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 a <code>Uuid<\/code> :\u067e<\/p>\n<p>\u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u0645\u0627 i64 \u0628\u0627\u0634\u062f \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">async<\/span> <span class=\"k\">fn<\/span> <span class=\"nf\">init_messages_table<\/span><span class=\"p\">(<\/span><span class=\"n\">pool<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">Pool<\/span><span class=\"o\"><span class=\"n\">Postgres<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nf\">query<\/span><span class=\"p\">(<\/span>\n        <span class=\"s\">r#\"\n    CREATE TABLE IF NOT EXISTS messages (\n      id bigserial,\n      content text\n    );\"#<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"nf\">.execute<\/span><span class=\"p\">(<\/span><span class=\"n\">pool<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">.await<\/span>\n    <span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"postgres messages_table creation error\"<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u0645\u0627 a \u0628\u0627\u0634\u062f <code>Uuid<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">async<\/span> <span class=\"k\">fn<\/span> <span class=\"nf\">init_messages_table<\/span><span class=\"p\">(<\/span><span class=\"n\">pool<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">Pool<\/span><span class=\"o\"><span class=\"n\">Postgres<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nf\">query<\/span><span class=\"p\">(<\/span>\n        <span class=\"s\">r#\"\n    CREATE TABLE IF NOT EXISTS messages (\n      id uuid,\n      content text\n    );\"#<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"nf\">.execute<\/span><span class=\"p\">(<\/span><span class=\"n\">pool<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">.await<\/span>\n    <span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"postgres messages_table creation error\"<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f: <code>id uuid<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062e\u0627\u0644\u0641 <code>id bigserial<\/code>.  \u0645\u0631\u062a\u0628!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF%D8%AF%D8%B1%D8%AC_%D8%AF%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f\/\u062f\u0631\u062c \u062f\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062f\u0631\u062c \u06cc\u06a9 \u0631\u062f\u06cc\u0641 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u0645\u0627 \u06cc\u06a9 \u0627\u0633\u062a <code>i64<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">let<\/span> <span class=\"n\">row<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nb\">i64<\/span><span class=\"p\">,)<\/span> <span class=\"o\">=<\/span>\n        <span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nf\">query_as<\/span><span class=\"p\">(<\/span><span class=\"s\">\"insert into messages (content) values ($1) returning id\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"nf\">.bind<\/span><span class=\"p\">(<\/span><span class=\"n\">req<\/span><span class=\"py\">.content<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">())<\/span>\n            <span class=\"nf\">.fetch_one<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">data<\/span><span class=\"py\">.db_pool<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">.await<\/span>\n            <span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"postgres insertion error\"<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f were ID \u06cc\u06a9 \u0627\u0633\u062a <code>Uuid<\/code>\u060c \u062f\u0631 \u0639\u0648\u0636 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code>    <span class=\"k\">let<\/span> <span class=\"n\">id<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nn\">types<\/span><span class=\"p\">::<\/span><span class=\"nn\">Uuid<\/span><span class=\"p\">::<\/span><span class=\"nf\">from_u128<\/span><span class=\"p\">(<\/span><span class=\"nn\">uuid<\/span><span class=\"p\">::<\/span><span class=\"nn\">Uuid<\/span><span class=\"p\">::<\/span><span class=\"nf\">new_v4<\/span><span class=\"p\">()<\/span><span class=\"nf\">.as_u128<\/span><span class=\"p\">());<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">row<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nn\">types<\/span><span class=\"p\">::<\/span><span class=\"n\">Uuid<\/span><span class=\"p\">,)<\/span> <span class=\"o\">=<\/span>\n        <span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nf\">query_as<\/span><span class=\"p\">(<\/span><span class=\"s\">\"insert into messages (id, content) values ($1, $2) returning id\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"nf\">.bind<\/span><span class=\"p\">(<\/span><span class=\"n\">id<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">())<\/span>\n            <span class=\"nf\">.bind<\/span><span class=\"p\">(<\/span><span class=\"n\">req<\/span><span class=\"py\">.content<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">())<\/span>\n            <span class=\"nf\">.fetch_one<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">data<\/span><span class=\"py\">.db_pool<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">.await<\/span>\n            <span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"postgres insertion error\"<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0641\u0627\u0648\u062a \u0627\u0635\u0644\u06cc \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f: <\/p>\n<ul>\n<li>\n<p><strong>\u0646\u0648\u0639 \u0628\u0627\u0632\u06af\u0634\u062a<\/strong> \u0627\u0632 \u0631\u062f\u06cc\u0641 \u0627\u0633\u062a <code>(sqlx::types::Uuid,)<\/code> \u0628\u062c\u0627\u06cc<code>(i64,)<\/code>&#8211; \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0634\u0646\u0627\u0633\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0632 Rust \u0645\u06cc \u0622\u06cc\u062f &#8211; \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Uuid<\/code> \u0628\u0631\u062e\u0644\u0627\u0641 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc\u06cc \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 id \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0634\u0646\u0627\u0633\u0647 \u0631\u062f\u06cc\u0641 \u0642\u0628\u0644\u06cc \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0645\u0642\u062f\u0627\u0631 id \u0631\u0627 \u0646\u0645\u06cc \u062f\u0627\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0632 Rust \u067e\u0627\u0633 \u06a9\u0646\u06cc\u0645.  \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0645\u0627 <strong>\u06cc\u06a9 \u0628\u062e\u0634 \u0627\u0636\u0627\u0641\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0648 \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f<\/strong>&#8211; <code>Uuid<\/code> \u0645\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AA%D9%88%D8%AC%D9%87_%D8%AF%D8%A7%D8%B4%D8%AA%D9%87_%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF\"><\/span>\n<p>  \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0646 \u0686\u0646\u062f \u06a9\u062f \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u062f\u06cc\u062f\u0645 \u06a9\u0647 AS &#8220;id: Uuid&#8221; \u0631\u0627 \u0628\u0647 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nf\">query_as<\/span><span class=\"p\">(<\/span><span class=\"s\">\"insert into messages (id, content) values ($1, $2) returning id AS <\/span><span class=\"se\">\\\"<\/span><span class=\"s\">id: Uuid<\/span><span class=\"se\">\\\"<\/span><span class=\"s\">\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u0645\u0639\u0644\u0648\u0645 \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0627 \u062c\u0631\u06cc\u0627\u0646 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a <code>sqlx<\/code> \u0646\u0633\u062e\u0647<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%A8%D8%AE%D9%88%D8%A7%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062a\u0639\u062c\u0628!  \u0648\u0642\u062a\u06cc \u0646\u0648\u0628\u062a \u0628\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u0646\u062c\u0627\u0645 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0646\u062f\u0627\u0634\u062a\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code>    <span class=\"k\">let<\/span> <span class=\"n\">select_query<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">sqlx<\/span><span class=\"p\">::<\/span><span class=\"nn\">query_as<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"n\">_<\/span><span class=\"p\">,<\/span> <span class=\"n\">Message<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"s\">\"SELECT id, content FROM messages\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">messages<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Vec<\/span><span class=\"o\"><span class=\"n\">Message<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"n\">select_query<\/span>\n        <span class=\"nf\">.fetch_all<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">data<\/span><span class=\"py\">.db_pool<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">.await<\/span>\n        <span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"postgres selection error\"<\/span><span class=\"p\">);<\/span>\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06a9\u0647 \u062c\u0627\u062f\u0648\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 sqlx \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0646\u0648\u0639 \u0645\u0627 \u0631\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0646\u062f <code>id<\/code>!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D9%84%D8%AD%D8%B8%D9%87_%D8%B4%DA%A9%D8%B1%DA%AF%D8%B2%D8%A7%D8%B1%DB%8C\"><\/span>\n<p>  \u06cc\u06a9 \u0644\u062d\u0638\u0647 \u0634\u06a9\u0631\u06af\u0632\u0627\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0634\u0645\u0627\u060c \u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0628\u0631\u062e\u0648\u0631\u062f \u06a9\u0631\u062f \u0648 \u0628\u0647 \u0622\u0646 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f<br \/>\u0645\u0646 \u062a\u0627\u0632\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0645\u060c \u067e\u0633 \u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0622\u06cc\u0627 \u0634\u0645\u0627 \u06cc\u06a9 \u0647\u0645\u0648\u0637\u0646\u0627\u0646 \u0631\u0648\u0633\u062a\u0627\u06cc\u06cc \u0647\u0633\u062a\u06cc\u062f\u061f <br \/>\u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0631\u062f\u061f<br \/>\u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u067e\u062e\u062a \u0632\u0646\u06af \u0632\u062f\u0647 \u0628\u0647 \u0686\u0647 \u0645\u0633\u0627\u0626\u0644 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0632\u0646\u06af \u067e\u0631\u062f\u0627\u062e\u062a\u0647 \u0634\u0648\u062f\u061f<\/p>\n<p>\u06cc\u0627\u062f\u0622\u0648\u0631\u06cc &#8211; \u06a9\u062f \u0627\u06cc\u0646 \u067e\u0633\u062a \u062f\u0631 GitHub \u0645\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u0628\u06cc \u062d\u0648\u0635\u0644\u0647 &#8211; \u0627\u06cc\u0646\u062c\u0627 \u0644\u06cc\u0646\u06a9 \u06a9\u062f \u0645\u0646 \u062f\u0631 GitHub \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0628\u0642\u06cc\u0647 &#8211; \u0628\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f. \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647: sqlx-postgres \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 sqlx \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u06cc\u06a9 db \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u0648 \u0639\u0644\u06cc\u0631\u063a\u0645 \u0622\u0646\u0686\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627\u0648\u0631 \u06a9\u0646\u062f\u060c &hellip;<\/p>\n","protected":false},"author":2,"featured_media":71121,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-71120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/71120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=71120"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/71120\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/71121"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=71120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=71120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=71120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}