dh_demo

DreamHanks demo project
git clone git://git.lair.cx/dh_demo
Log | Files | Refs | README

user_acl_groups.ts (1034B)


      1 import { modelBehaviour } from '@/lib/model_helpers'
      2 import { UserProfile } from '@/lib/models/user_profile'
      3 import { RowDataPacket } from 'mysql2'
      4 
      5 const SQL_GET_USER_ACL_GROUPS = `
      6     SELECT acl_group
      7     FROM user_acl_groups
      8     WHERE login_id = ?
      9 `
     10 
     11 export const getUserACLGroups = modelBehaviour<
     12   [loginId: number],
     13   string[]
     14 >(async (conn, args) => {
     15   const [rows] = await conn.query<RowDataPacket[]>({
     16     sql: SQL_GET_USER_ACL_GROUPS,
     17   }, args)
     18 
     19   return rows.map(row => row[0])
     20 })
     21 
     22 const SQL_GET_ACL_GROUP_USERS = `
     23     SELECT p.login_id, p.nickname, p.bio, p.updated_at
     24     FROM user_acl_groups g
     25          inner join user_profiles p on g.login_id = p.login_id
     26     WHERE acl_group = ?
     27 `
     28 
     29 export const getACLGroupUsers = modelBehaviour<
     30   [aclGroup: string],
     31   UserProfile[]
     32 >(async (conn, args) => {
     33   const [rows] = await conn.query<RowDataPacket[]>({
     34     sql: SQL_GET_ACL_GROUP_USERS,
     35   }, args)
     36 
     37   return rows.map(row => ({
     38     loginId: row[0],
     39     nickname: row[1],
     40     bio: row[2],
     41     updatedAt: row[3],
     42   }))
     43 })