pubky-homeserver 0.10.0

Pubky core's homeserver.
Documentation
use async_trait::async_trait;
use sqlx::Transaction;

use crate::persistence::sql::migration::MigrationTrait;

/// Adds the timestamp for signup token consumption.
pub struct M20260609AddSignupCodeUsedAtMigration;

#[async_trait]
impl MigrationTrait for M20260609AddSignupCodeUsedAtMigration {
    async fn up(&self, tx: &mut Transaction<'static, sqlx::Postgres>) -> anyhow::Result<()> {
        sqlx::query("ALTER TABLE signup_codes ADD COLUMN IF NOT EXISTS used_at TIMESTAMP")
            .execute(&mut **tx)
            .await?;
        sqlx::query(
            "UPDATE signup_codes SET used_at = created_at WHERE used_by IS NOT NULL AND used_at IS NULL",
        )
        .execute(&mut **tx)
        .await?;
        Ok(())
    }

    fn name(&self) -> &str {
        "m20260609_add_signup_code_used_at"
    }
}