cesjavi commited on
Commit
beef2ec
·
1 Parent(s): ac2d8e5

Fix: Simplified join syntax (column-based) for better PostgREST compatibility (Phase 8 Governance)

Browse files
frontend/src/components/AuditView.tsx CHANGED
@@ -55,9 +55,9 @@ const AuditView: React.FC = () => {
55
  .from('audit_logs')
56
  .select(`
57
  *,
58
- profiles!actor_id(full_name, email),
59
- agents:agent_id(name),
60
- tasks:task_id(title)
61
  `)
62
  .order('created_at', { ascending: false })
63
  .range(page * pageSize, (page + 1) * pageSize - 1);
@@ -76,9 +76,9 @@ const AuditView: React.FC = () => {
76
  const rows = logs.map(log => [
77
  log.created_at,
78
  log.action,
79
- log.profiles?.email || 'System',
80
- log.agents?.name || 'N/A',
81
- log.tasks?.title || 'N/A',
82
  JSON.stringify(log.metadata)
83
  ]);
84
 
@@ -93,8 +93,8 @@ const AuditView: React.FC = () => {
93
 
94
  const filteredLogs = logs.filter(log =>
95
  log.action.toLowerCase().includes(searchTerm.toLowerCase()) ||
96
- (log.profiles?.email || '').toLowerCase().includes(searchTerm.toLowerCase()) ||
97
- (log.agents?.name || '').toLowerCase().includes(searchTerm.toLowerCase())
98
  );
99
 
100
  const formatTimestamp = (ts: string) => {
@@ -191,24 +191,24 @@ const AuditView: React.FC = () => {
191
  <td style={{ padding: 'var(--space-md)', fontSize: '0.9rem' }}>
192
  <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
193
  <User size={14} style={{ opacity: 0.5 }} />
194
- {log.profiles?.email || <span style={{ color: 'var(--text-dim)', fontSize: '0.8rem' }}>System</span>}
195
  </div>
196
  </td>
197
  <td style={{ padding: 'var(--space-md)', fontSize: '0.9rem' }}>
198
  <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>
199
- {log.agents && (
200
  <div style={{ display: 'flex', alignItems: 'center', gap: '4px', color: 'var(--accent)', fontSize: '0.8rem' }}>
201
  <Bot size={12} />
202
- {log.agents.name}
203
  </div>
204
  )}
205
- {log.tasks && (
206
  <div style={{ display: 'flex', alignItems: 'center', gap: '4px', color: 'var(--text-dim)', fontSize: '0.8rem' }}>
207
  <FileText size={12} />
208
- {log.tasks.title}
209
  </div>
210
  )}
211
- {!log.agents && !log.tasks && <span style={{ color: 'var(--text-dim)', fontSize: '0.8rem' }}>-</span>}
212
  </div>
213
  </td>
214
  <td style={{ padding: 'var(--space-md)', textAlign: 'right' }}>
 
55
  .from('audit_logs')
56
  .select(`
57
  *,
58
+ actor_id(full_name, email),
59
+ agent_id(name),
60
+ task_id(title)
61
  `)
62
  .order('created_at', { ascending: false })
63
  .range(page * pageSize, (page + 1) * pageSize - 1);
 
76
  const rows = logs.map(log => [
77
  log.created_at,
78
  log.action,
79
+ (log.actor_id as any)?.email || 'System',
80
+ (log.agent_id as any)?.name || 'N/A',
81
+ (log.task_id as any)?.title || 'N/A',
82
  JSON.stringify(log.metadata)
83
  ]);
84
 
 
93
 
94
  const filteredLogs = logs.filter(log =>
95
  log.action.toLowerCase().includes(searchTerm.toLowerCase()) ||
96
+ ((log.actor_id as any)?.email || '').toLowerCase().includes(searchTerm.toLowerCase()) ||
97
+ ((log.agent_id as any)?.name || '').toLowerCase().includes(searchTerm.toLowerCase())
98
  );
99
 
100
  const formatTimestamp = (ts: string) => {
 
191
  <td style={{ padding: 'var(--space-md)', fontSize: '0.9rem' }}>
192
  <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
193
  <User size={14} style={{ opacity: 0.5 }} />
194
+ {(log.actor_id as any)?.email || <span style={{ color: 'var(--text-dim)', fontSize: '0.8rem' }}>System</span>}
195
  </div>
196
  </td>
197
  <td style={{ padding: 'var(--space-md)', fontSize: '0.9rem' }}>
198
  <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>
199
+ {log.agent_id && (
200
  <div style={{ display: 'flex', alignItems: 'center', gap: '4px', color: 'var(--accent)', fontSize: '0.8rem' }}>
201
  <Bot size={12} />
202
+ {(log.agent_id as any).name}
203
  </div>
204
  )}
205
+ {log.task_id && (
206
  <div style={{ display: 'flex', alignItems: 'center', gap: '4px', color: 'var(--text-dim)', fontSize: '0.8rem' }}>
207
  <FileText size={12} />
208
+ {(log.task_id as any).title}
209
  </div>
210
  )}
211
+ {!log.agent_id && !log.task_id && <span style={{ color: 'var(--text-dim)', fontSize: '0.8rem' }}>-</span>}
212
  </div>
213
  </td>
214
  <td style={{ padding: 'var(--space-md)', textAlign: 'right' }}>
frontend/src/components/TeamsView.tsx CHANGED
@@ -88,7 +88,7 @@ const TeamsView: React.FC = () => {
88
  .from('team_members')
89
  .select(`
90
  *,
91
- profiles!user_id(full_name, email)
92
  `)
93
  .eq('team_id', teamId);
94
 
@@ -96,8 +96,8 @@ const TeamsView: React.FC = () => {
96
 
97
  const formattedMembers = data.map(m => ({
98
  ...m,
99
- full_name: m.profiles?.full_name,
100
- email: m.profiles?.email
101
  }));
102
 
103
  setMembers(formattedMembers);
 
88
  .from('team_members')
89
  .select(`
90
  *,
91
+ user_id(full_name, email)
92
  `)
93
  .eq('team_id', teamId);
94
 
 
96
 
97
  const formattedMembers = data.map(m => ({
98
  ...m,
99
+ full_name: (m.user_id as any)?.full_name,
100
+ email: (m.user_id as any)?.email
101
  }));
102
 
103
  setMembers(formattedMembers);