48 lines
2.0 KiB
SQL
48 lines
2.0 KiB
SQL
-- 创建公司合作关系表
|
||
-- 记录采购商与工厂之间的合作关系
|
||
|
||
CREATE TABLE company_relationships (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
purchaser_company_id UUID NOT NULL REFERENCES companies(id),
|
||
factory_company_id UUID NOT NULL REFERENCES companies(id),
|
||
factory_type factory_type NOT NULL,
|
||
status TEXT NOT NULL DEFAULT 'active', -- active, inactive
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
UNIQUE(purchaser_company_id, factory_company_id)
|
||
);
|
||
|
||
-- 添加注释
|
||
COMMENT ON TABLE company_relationships IS '公司合作关系表,记录采购商与工厂的合作关系';
|
||
COMMENT ON COLUMN company_relationships.purchaser_company_id IS '采购商公司ID';
|
||
COMMENT ON COLUMN company_relationships.factory_company_id IS '工厂公司ID';
|
||
COMMENT ON COLUMN company_relationships.status IS '关系状态:active-合作中,inactive-已解除';
|
||
|
||
-- 创建索引
|
||
CREATE INDEX idx_relationships_purchaser ON company_relationships(purchaser_company_id);
|
||
CREATE INDEX idx_relationships_factory ON company_relationships(factory_company_id);
|
||
CREATE INDEX idx_relationships_status ON company_relationships(status);
|
||
|
||
-- 启用RLS
|
||
ALTER TABLE company_relationships ENABLE ROW LEVEL SECURITY;
|
||
|
||
-- 创建查询策略:双方公司成员可查看
|
||
CREATE POLICY company_select_relationships ON company_relationships
|
||
FOR SELECT USING (
|
||
purchaser_company_id = get_user_master_company_id()
|
||
OR factory_company_id = get_user_master_company_id()
|
||
);
|
||
|
||
-- 创建插入策略:仅采购商可创建关系
|
||
CREATE POLICY company_insert_relationships ON company_relationships
|
||
FOR INSERT WITH CHECK (
|
||
purchaser_company_id = get_user_master_company_id()
|
||
);
|
||
|
||
-- 创建更新策略:双方公司可更新
|
||
CREATE POLICY company_update_relationships ON company_relationships
|
||
FOR UPDATE USING (
|
||
purchaser_company_id = get_user_master_company_id()
|
||
OR factory_company_id = get_user_master_company_id()
|
||
);
|