跳转到主要内容

为您的Django用户使用PostgreSQL触发器创建徽章

项目描述

用户通过满足在badge.json文件中定义的一些条件来获得徽章。

然后创建一个徽章对象(数据库模型),将用户与徽章关联。

条件

条件是用于颁发徽章的SQL检查。

如果您将trigger_contition设置为“update”或“insert”,则可以访问变量NEW。这是更新或插入后的数据库对象。

如果您将trigger_contition设置为“update”或“delete”,则可以访问变量OLD。这是更新或删除后的数据库对象。

触发器

我们希望徽章在满足条件后立即颁发。即使事件来自Django应用程序之外的来源。

我们不想依赖celery定期检查徽章

  • 太频繁:这是一个性能瓶颈

  • 太晚:对用户来说很烦人

在“某事”改变时检查每个徽章的条件。

要运行创建负责徽章获得的数据库触发器的命令

>>> python manage.py create_badge_triggers

当您更改badge.json(添加、更新或删除徽章)时,运行此命令以在数据库中反映这些更改。

badge.json示例

` [{"name": "Pionner", "code": "pionner", "condition": "age(NEW.date_joined) > interval '1 year'", "trigger_condition": "update", "trigger_table": "auth_user", "user_field": "id" }, {"name": "Collector", "code": "collector", "condition": "count(id) >= 5 from dummy_sketch where user_id = NEW.user_id", "trigger_condition": "insert", "trigger_table": "dummy_sketch", "user_field": "user_id" }, {"name": "Star", "code": "star", "condition": "hit_views > 1000 ", "trigger_condition": "update", "trigger_table": "dummy_sketch", "user_field": "user_id" }] ` name 是徽章的名称,它将在前端或 API 中显示。

code 是徽章的唯一代码名称。

condition 是检查徽章是否应被获得的查询。

trigger_condition 说明了何时必须进行检查。可以是插入、更新或删除之一。

安装

有关说明,请参阅 安装 文件。

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

django-pg-badges-0.1.tar.gz (6.2 kB 查看散列)

上传时间

构建分发

django-pg-badges-0.1.linux-x86_64.tar.gz (11.0 kB 查看散列)

上传时间

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面