sqlauthz
Version:
Declarative permission management for PostgreSQL
25 lines (24 loc) • 973 B
TypeScript
import { Permission, SQLActor, SQLFunction, SQLGroup, SQLProcedure, SQLRowLevelSecurityPolicy, SQLSchema, SQLSequence, SQLTableMetadata, SQLUser, SQLView } from "./sql.js";
export interface SQLEntities {
users: SQLUser[];
groups: SQLGroup[];
schemas: SQLSchema[];
tables: SQLTableMetadata[];
views: SQLView[];
rlsPolicies: SQLRowLevelSecurityPolicy[];
functions: SQLFunction[];
procedures: SQLProcedure[];
sequences: SQLSequence[];
}
export interface SQLBackendContext {
setupQuery?: string;
teardownQuery?: string;
transactionStartQuery?: string;
transactionCommitQuery?: string;
removeAllPermissionsFromActorsQueries: (users: SQLActor[], entities: SQLEntities) => string[];
compileGrantQueries: (permissions: Permission[], entities: SQLEntities) => string[];
}
export interface SQLBackend {
fetchEntities: () => Promise<SQLEntities>;
getContext: (entities: SQLEntities) => Promise<SQLBackendContext>;
}