sql >> Databáze >  >> RDS >> Sqlserver

Jak implementovat odznaky?

Implementace podobná Stackoverflow je ve skutečnosti mnohem jednodušší, než jste popsali, na základě kousků informací, které tým jednou za čas zahodí.

V databázi jednoduše uložíte kolekci BadgeID -UserID párů, abyste mohli sledovat, kdo co má (a počet nebo rowID, aby bylo možné u některých odznaků získat více ocenění).

V aplikaci je pro každý typ odznaku objekt pracovníka. Objekt je v mezipaměti a když vyprší platnost mezipaměti, pracovník spustí vlastní logiku pro určení, kdo by měl získat odznak a provést aktualizace, a poté se znovu vloží do mezipaměti:

public abstract class BadgeJob
{
    protected BadgeJob()
    {
        //start cycling on initialization
        Insert();
    }

    //override to provide specific badge logic
    protected abstract void AwardBadges();

    //how long to wait between iterations
    protected abstract TimeSpan Interval { get; }

    private void Callback(string key, object value, CacheItemRemovedReason reason)
    {
        if (reason == CacheItemRemovedReason.Expired)
        {
            this.AwardBadges();
            this.Insert();
        }
    }

    private void Insert()
    {
        HttpRuntime.Cache.Add(this.GetType().ToString(),
            this,
            null,
            Cache.NoAbsoluteExpiration,
            this.Interval,
            CacheItemPriority.Normal,
            this.Callback);
    }
}

A konkrétní implementace:

public class CommenterBadge : BadgeJob
{
    public CommenterBadge() : base() { }

    protected override void AwardBadges()
    {
        //select all users who have more than x comments 
        //and dont have the commenter badge
        //add badges
    }

    //run every 10 minutes
    protected override TimeSpan Interval
    {
        get { return new TimeSpan(0,10,0); }
    }
}


  1. Instalace Oracle 11gR2 na Windows Server 2012

  2. Jak převést data z jednoho řádku do jednoho sloupce v oracle

  3. Co musím při odesílání dotazu uniknout?

  4. najít podobné knihy na základě zakoupených knih na základě meta klíčových slov knihy