Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

बैज कैसे लागू करें?

एक समान-से-स्टैकओवरफ़्लो कार्यान्वयन वास्तव में आपके द्वारा वर्णित की तुलना में बहुत सरल है, जो टीम द्वारा हर बार थोड़ी देर में छोड़ी गई जानकारी के आधार पर होता है।

डेटाबेस में, आप बस BadgeID . का संग्रह संग्रहित करते हैं -UserID जोड़े ट्रैक करने के लिए कि किसके पास क्या है (और कुछ बैज के लिए कई पुरस्कारों की अनुमति देने के लिए एक गिनती या एक पंक्ति आईडी)।

एप्लिकेशन में, प्रत्येक बैज प्रकार के लिए एक वर्कर ऑब्जेक्ट होता है। ऑब्जेक्ट कैश में है, और जब कैश समाप्त हो जाता है, तो कार्यकर्ता यह निर्धारित करने के लिए अपना तर्क चलाता है कि किसे बैज प्राप्त करना चाहिए और अपडेट करना चाहिए, और फिर वह खुद को कैश में फिर से सम्मिलित करता है:

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);
    }
}

और एक ठोस कार्यान्वयन:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल:संग्रहीत प्रक्रिया में खंड में:मूल्यों को कैसे पास करें

  2. आशावादी संगामिति:IsConcurrencyToken और RowVersion

  3. SQL सर्वर, डेटा हानि के बिना तालिका बनाने के बाद ऑटो वेतन वृद्धि कैसे सेट करें?

  4. विंडो फ़ंक्शंस - रीसेट के साथ कुल चल रहा है

  5. SQL सर्वर (T-SQL) में एक विभाजन को स्विच-आउट करें