java - 特定客户数据清除
问题描述
我们有这个用例,由于客户退出后的一些合规性,我们希望清除与客户相关的整个数据。
为此,我创建了一个任务,它运行几个带有硬编码表名的删除语句。
如果在应用程序中添加了新表,我们需要每次都更新硬编码的表名列表并且它不被接受。
下面的问题是关于如何以编程方式列出所有表格的答案。
但是在我的用例中,我们不想删除一些静态表/应用程序配置表。
所以问题是,如何使表名可配置如何在删除数据时避免静态表
保留此列表的表上的 Crud API 是一种选择,但有更好的方法吗?
当前实现在查询列表下方执行以清除数据
private static List<String> DELETE_ALL_DATA_BY_REALM_SQL;
static {
DELETE_ALL_DATA_BY_REALM_SQL = new ArrayList<>();
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_ATTACHMENT);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_FORM_REALM);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_JOB_DETAILS_BY_REALM_SQL);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_JOB_BY_REALM_SQL);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_FORM_METADATA);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_FORM_METADATA_SQL);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_ACCESS_CONTROL);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_ACCESS_CONTROL_BY_REALM);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_CONFIGURATION_);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_FORM_SCHEMA_);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_BY_REALM_SQL);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_FORM_MIGRATION_);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_AUDIT_EVENT);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_CLIENTID_);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_FORM_FEATURE_REALM_ENABLEMENT_BY_REALM_SQL);
DELETE_ALL_DATA_BY_REALM_SQL.add(DELETE_REALM_BY_REALM_SQL);
}
解决方案
推荐阅读
- java - 递归函数打印大的非预期值。尝试打印 Instructions.l 请求的递归值
- javascript - Vue 无法与 html 一起正常工作(在不应该按下按钮时刷新)
- reactjs - 在 React 应用程序中注册提交时将 displayName 添加到新的 Firebase Auth 配置文件
- php - 如何从具有多个属性的元素中获取属性值
- python - 如何在txt文件的变量中写入字符串
- javascript - 如何使用节点 js 将 S3 连接到 Amazon Textract
- python - 为坐标提供位置参数并将它们聚集在一起
- javascript - 使用 REST API 上传后“cors”类型的错误云响应(来自 React)
- sql - 带有两个表的内部联接查询
- android - android.preference.Preference.setOnPreferenceClickListener() 不起作用