ent-framework
Version:
A PostgreSQL graph-database-alike library with microsharding and row-level security
32 lines (29 loc) • 806 B
text/typescript
import { PgSchema } from "ent-framework/pg";
import {
ID,
BaseEnt,
AllowIf,
CanReadOutgoingEdge,
GLOBAL_SHARD,
} from "ent-framework";
import { cluster } from "./cluster";
import { EntUser } from "./EntUser";
const schema = new PgSchema(
"organization_users",
{
id: { type: ID, autoInsert: "nextval('organization_users_id_seq')" },
organization_id: { type: ID },
user_id: { type: ID },
},
["organization_id", "user_id"]
);
export class EntOrganizationUser extends BaseEnt(cluster, schema) {
static override configure() {
return new this.Configuration({
shardAffinity: GLOBAL_SHARD,
privacyInferPrincipal: async (_vc, row) => row.user_id,
privacyLoad: [new AllowIf(new CanReadOutgoingEdge("user_id", EntUser))],
privacyInsert: [],
});
}
}