#ifndef PGACL_H #define PGACL_H #include "Pgsql_Value.h" #include #include enum class Privilege { Select, Update, Insert, Delete, Truncate, References, Trigger, Execute, Usage, Create, Connect, Temporary }; char privilegeToChar(Privilege p); enum class PrivValue { No, Yes, YesWithGrant }; class PgAcl { public: PgAcl() = default; explicit PgAcl(const QString &acl); void setFromString(const QString &acl); PrivValue privilege(Privilege priv) const; PrivValue privilege(char c) const; const QString& grantee() const { return m_grantee; } const QString& grantor() const { return m_grantor; } QString singleString() const; QString sql(const QString &all_pattern, const QString &grant_on_object, const QString &column) const; // Returns true when the list of privileges is empty bool empty() const; private: QString m_grantee; QString m_grantor; QString m_privileges; }; using AclList = std::vector; void operator<<(PgAcl &acl, const Pgsql::Value &v); namespace Pgsql { template <> PgAcl StringToArrayElem(std::string_view sv); } #endif // PGACL_H