const excludeAttributes = [ "password", "otp_code", "otp_expires_at", 'must_change_password', 'password_expires_at', "personal_info.name.given_name", "personal_info.name.middle_name", "personal_info.name.last_name", "personal_info.name.extension_name", "personal_info.addresses[]", "personal_info.addresses[].city", "personal_info.addresses[].country", "personal_info.addresses[].street", "personal_info.addresses[].zip", "personal_info.addresses[].address_type", "personal_info.addresses[].state", "personal_info.phone_number[]", "personal_info.phone_number[].country_code", "personal_info.phone_number[].number", "personal_info.phone_number[].phone_type", ]; const jsonbSchemas = { personal_info: { name: { full_name: { type: "text", label: "Full Name", order: 2 }, // ← slot 2 }, date_of_birth: { type: "date", label: "Date of Birth", order: 4 }, occupation: { type: "text", label: "Occupation", order: 5 }, // addresses: { // full_address: { type: "text", label: "Full Address" }, // }, // phone_number: { // full_number: { type: "text", label: "Phone Number" }, // }, }, }; // Different exclude sets per role const adminExclude = [ ...excludeAttributes, // admins can see audit fields, so nothing extra excluded ]; const userExclude = [ ...excludeAttributes, // regular users cannot see audit trails "created_by", "updated_by", "deleted_by", "deleted_at", ]; const computedAttributes = [ { key: "groups", label: "Groups", type: "array", // tells the paginator this is a pre-joined association array order: 5, }, ]; module.exports = { excludeAttributes, adminExclude, userExclude, jsonbSchemas, computedAttributes };