You've already forked AstralRinth
forked from didirus/AstralRinth
Allow users to manage their own affiliate codes (#4392)
* Allow users to manage their own affiliate codes * Add a badge to restrict access to affiliate codes * sqlx prepare and clippy
This commit is contained in:
@@ -9,6 +9,7 @@ pub struct DBAffiliateCode {
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub created_by: DBUserId,
|
||||
pub affiliate: DBUserId,
|
||||
pub source_name: String,
|
||||
}
|
||||
|
||||
impl DBAffiliateCode {
|
||||
@@ -17,7 +18,7 @@ impl DBAffiliateCode {
|
||||
exec: impl sqlx::Executor<'_, Database = sqlx::Postgres>,
|
||||
) -> Result<Option<DBAffiliateCode>, DatabaseError> {
|
||||
let record = sqlx::query!(
|
||||
"SELECT id, created_at, created_by, affiliate
|
||||
"SELECT id, created_at, created_by, affiliate, source_name
|
||||
FROM affiliate_codes WHERE id = $1",
|
||||
id as DBAffiliateCodeId
|
||||
)
|
||||
@@ -29,6 +30,7 @@ impl DBAffiliateCode {
|
||||
created_at: record.created_at,
|
||||
created_by: DBUserId(record.created_by),
|
||||
affiliate: DBUserId(record.affiliate),
|
||||
source_name: record.source_name,
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -37,7 +39,7 @@ impl DBAffiliateCode {
|
||||
exec: impl sqlx::Executor<'_, Database = sqlx::Postgres>,
|
||||
) -> Result<Vec<DBAffiliateCode>, DatabaseError> {
|
||||
let records = sqlx::query!(
|
||||
"SELECT id, created_at, created_by, affiliate
|
||||
"SELECT id, created_at, created_by, affiliate, source_name
|
||||
FROM affiliate_codes WHERE affiliate = $1",
|
||||
affiliate as DBUserId
|
||||
)
|
||||
@@ -49,6 +51,7 @@ impl DBAffiliateCode {
|
||||
created_at: record.created_at,
|
||||
created_by: DBUserId(record.created_by),
|
||||
affiliate: DBUserId(record.affiliate),
|
||||
source_name: record.source_name,
|
||||
})
|
||||
})
|
||||
.try_collect::<Vec<_>>()
|
||||
@@ -62,12 +65,13 @@ impl DBAffiliateCode {
|
||||
exec: impl sqlx::Executor<'_, Database = sqlx::Postgres>,
|
||||
) -> Result<(), DatabaseError> {
|
||||
sqlx::query!(
|
||||
"INSERT INTO affiliate_codes (id, created_at, created_by, affiliate)
|
||||
VALUES ($1, $2, $3, $4)",
|
||||
"INSERT INTO affiliate_codes (id, created_at, created_by, affiliate, source_name)
|
||||
VALUES ($1, $2, $3, $4, $5)",
|
||||
self.id as DBAffiliateCodeId,
|
||||
self.created_at,
|
||||
self.created_by as DBUserId,
|
||||
self.affiliate as DBUserId
|
||||
self.affiliate as DBUserId,
|
||||
self.source_name
|
||||
)
|
||||
.execute(exec)
|
||||
.await?;
|
||||
@@ -92,11 +96,27 @@ impl DBAffiliateCode {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn update_source_name(
|
||||
id: DBAffiliateCodeId,
|
||||
source_name: &str,
|
||||
exec: impl sqlx::Executor<'_, Database = sqlx::Postgres>,
|
||||
) -> Result<bool, DatabaseError> {
|
||||
let result = sqlx::query!(
|
||||
"UPDATE affiliate_codes SET source_name = $1 WHERE id = $2",
|
||||
source_name,
|
||||
id as DBAffiliateCodeId
|
||||
)
|
||||
.execute(exec)
|
||||
.await?;
|
||||
|
||||
Ok(result.rows_affected() > 0)
|
||||
}
|
||||
|
||||
pub async fn get_all(
|
||||
exec: impl sqlx::Executor<'_, Database = sqlx::Postgres>,
|
||||
) -> Result<Vec<DBAffiliateCode>, DatabaseError> {
|
||||
let records = sqlx::query!(
|
||||
"SELECT id, created_at, created_by, affiliate
|
||||
"SELECT id, created_at, created_by, affiliate, source_name
|
||||
FROM affiliate_codes ORDER BY created_at DESC"
|
||||
)
|
||||
.fetch(exec)
|
||||
@@ -107,6 +127,7 @@ impl DBAffiliateCode {
|
||||
created_at: record.created_at,
|
||||
created_by: DBUserId(record.created_by),
|
||||
affiliate: DBUserId(record.affiliate),
|
||||
source_name: record.source_name,
|
||||
})
|
||||
})
|
||||
.try_collect::<Vec<_>>()
|
||||
|
||||
Reference in New Issue
Block a user