-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathcontacts.ts
More file actions
61 lines (48 loc) · 1.69 KB
/
contacts.ts
File metadata and controls
61 lines (48 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { eSupabase } from '../lib/supabase/encrypted'
import { contactsTable } from '../encryption/index'
// Example queries using encrypted Supabase wrapper
export async function getAllContacts() {
const { data, error } = await eSupabase
.from('contacts', contactsTable)
.select('id, name, email, role') // explicit columns, no *
.order('created_at', { ascending: false })
return { data, error }
}
export async function getContactsByRole(role: string) {
const { data, error } = await eSupabase
.from('contacts', contactsTable)
.select('id, name, email, role')
.eq('role', role) // auto-encrypted
return { data, error }
}
export async function searchContactsByName(searchTerm: string) {
const { data, error } = await eSupabase
.from('contacts', contactsTable)
.select('id, name, email, role')
.ilike('name', `%${searchTerm}%`) // auto-encrypted
return { data, error }
}
export async function createContact(contact: { name: string; email: string; role: string }) {
const { data, error } = await eSupabase
.from('contacts', contactsTable)
.insert(contact) // auto-encrypted
.select('id, name, email, role')
.single()
return { data, error }
}
export async function updateContact(id: string, updates: Partial<{ name: string; email: string; role: string }>) {
const { data, error } = await eSupabase
.from('contacts', contactsTable)
.update(updates) // auto-encrypted
.eq('id', id)
.select('id, name, email, role')
.single()
return { data, error }
}
export async function deleteContact(id: string) {
const { error } = await eSupabase
.from('contacts', contactsTable)
.delete()
.eq('id', id)
return { error }
}