1// Package models contains the types for schema 'public'.
2package models
3
4// Code generated by xo. DO NOT EDIT.
5
6import (
7	"database/sql"
8)
9
10// Table Access
11type TableAccess struct {
12	Relname string         // relname
13	Relkind string         // relkind
14	Datname sql.NullString // datname
15	Count   sql.NullInt64  // count
16}
17
18// GetTableAccesses runs a custom query, returning results as TableAccess.
19func GetTableAccesses(db XODB) ([]*TableAccess, error) {
20	var err error
21
22	// sql query
23	sqlstr := `SELECT c.relname, c.relkind, b.datname datname, count(*) FROM pg_locks a ` +
24		`JOIN pg_stat_database b ` +
25		`ON a.database=b.datid ` +
26		`JOIN pg_class c ` +
27		`ON a.relation=c.oid ` +
28		`WHERE a.relation IS NOT NULL ` +
29		`AND a.database IS NOT NULL ` +
30		`GROUP BY 1,2,3`
31
32	// run query
33	XOLog(sqlstr)
34	q, err := db.Query(sqlstr)
35	if err != nil {
36		return nil, err
37	}
38	defer q.Close()
39
40	// load results
41	res := []*TableAccess{}
42	for q.Next() {
43		ta := TableAccess{}
44
45		// scan
46		err = q.Scan(&ta.Relname, &ta.Relkind, &ta.Datname, &ta.Count)
47		if err != nil {
48			return nil, err
49		}
50
51		res = append(res, &ta)
52	}
53
54	return res, nil
55}
56