about summary refs log tree commit diff stats
path: root/yt/src/storage/migrate/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'yt/src/storage/migrate/mod.rs')
-rw-r--r--yt/src/storage/migrate/mod.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/yt/src/storage/migrate/mod.rs b/yt/src/storage/migrate/mod.rs
index 4e956de..9696616 100644
--- a/yt/src/storage/migrate/mod.rs
+++ b/yt/src/storage/migrate/mod.rs
@@ -18,8 +18,11 @@ pub enum DbVersion {
     /// The first database version.
     /// Introduced: 2025-02-16.
     Zero,
+
+    /// Introduced: 2025-02-17.
+    One,
 }
-const CURRENT_VERSION: DbVersion = DbVersion::Zero;
+const CURRENT_VERSION: DbVersion = DbVersion::One;
 
 async fn set_db_version(
     tx: &mut Transaction<'_, Sqlite>,
@@ -59,13 +62,16 @@ impl DbVersion {
         match self {
             DbVersion::Empty => unreachable!("A empty version does not have an associated integer"),
             DbVersion::Zero => 0,
+            DbVersion::One => 1,
         }
     }
     fn from_db(number: i64, namespace: &str) -> Result<Self> {
         match (number, namespace) {
             (0, "yt") => Ok(DbVersion::Zero),
+            (1, "yt") => Ok(DbVersion::One),
 
             (0, other) => bail!("Db version is Zero, but got unknown namespace: '{other}'"),
+            (1, other) => bail!("Db version is One, but got unknown namespace: '{other}'"),
 
             (other, "yt") => bail!("Got unkown version for 'yt' namespace: {other}"),
             (num, nasp) => bail!("Got unkown version number ({num}) and namespace ('{nasp}')"),
@@ -92,10 +98,24 @@ impl DbVersion {
                 Box::pin(Self::Zero.update(app)).await
             }
 
-            // This is the current version
             DbVersion::Zero => {
+                let mut tx = app.database.begin().await?;
                 debug!("Migrate: Zero -> One");
 
+                sqlx::raw_sql(include_str!("./sql/01_zero_to_one.sql"))
+                    .execute(&mut *tx)
+                    .await?;
+
+                set_db_version(&mut tx, Some(DbVersion::Zero), DbVersion::One).await?;
+
+                tx.commit().await?;
+                Box::pin(Self::One.update(app)).await
+            }
+
+            // This is the current_version
+            DbVersion::One => {
+                debug!("Migrate: One -> Two");
+
                 assert_eq!(self, CURRENT_VERSION);
                 assert_eq!(self, get_version(app).await?);
                 Ok(())