feat(base): 重置数据库序列并优化查询语句
- 在 base 模块初始化时添加重置所有序列的函数
- 修改多个模块中的查询语句,使用 Where(key, value) 替代 Where("key = ?", value)
- 优化部分代码结构,提高可读性和维护性
This commit is contained in:
@@ -2,6 +2,7 @@ package base
|
||||
|
||||
import (
|
||||
_ "blazing/modules/base/packed"
|
||||
"context"
|
||||
|
||||
"blazing/cool"
|
||||
|
||||
@@ -30,7 +31,38 @@ func init() {
|
||||
cool.FillInitData(ctx, "base", &model.BaseSysRoleDepartment{})
|
||||
cool.FillInitData(ctx, "base", &model.BaseSysParam{})
|
||||
cool.FillInitData(ctx, "base", &model.BaseSysConf{})
|
||||
g.DB("default").Exec(context.Background(), `CREATE OR REPLACE FUNCTION reset_all_sequences()
|
||||
RETURNS void AS $$
|
||||
DECLARE
|
||||
seq_record record;
|
||||
BEGIN
|
||||
FOR seq_record IN
|
||||
SELECT
|
||||
'SELECT SETVAL(' ||
|
||||
quote_literal(quote_ident(PGT.schemaname) || '.' || quote_ident(S.relname)) ||
|
||||
', COALESCE(MAX(' ||quote_ident(C.attname)|| '), 1) ) FROM ' ||
|
||||
quote_ident(PGT.schemaname)|| '.'||quote_ident(T.relname)|| ';' AS sql
|
||||
FROM
|
||||
pg_class AS S,
|
||||
pg_depend AS D,
|
||||
pg_class AS T,
|
||||
pg_attribute AS C,
|
||||
pg_tables AS PGT
|
||||
WHERE
|
||||
S.relkind = 'S'
|
||||
AND S.oid = D.objid
|
||||
AND D.refobjid = T.oid
|
||||
AND D.refobjid = C.attrelid
|
||||
AND D.refobjsubid = C.attnum
|
||||
AND T.relname = PGT.tablename
|
||||
LOOP
|
||||
EXECUTE seq_record.sql;
|
||||
END LOOP;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- 执行函数
|
||||
SELECT reset_all_sequences();`, nil) //重置所有序列
|
||||
g.Log().Debug(ctx, "module base init finished ...")
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user