-- name: CreateMembership :one INSERT INTO memberships (company_id, user_id, role, status) VALUES ($1, $2, $3, $4) RETURNING *; -- name: GetMembership :one SELECT * FROM memberships WHERE company_id = $1 AND user_id = $2 LIMIT 1; -- name: ListMembershipsByCompany :many SELECT m.*, u.email, u.name AS user_name FROM memberships m JOIN users u ON u.id = m.user_id WHERE m.company_id = $1 ORDER BY m.created_at; -- name: ListMembershipsByUser :many SELECT m.*, c.name AS company_name FROM memberships m JOIN companies c ON c.id = m.company_id WHERE m.user_id = $1 AND m.status = 'active' ORDER BY m.created_at; -- name: DeactivateMembership :one UPDATE memberships SET status = 'inactive', updated_at = now() WHERE company_id = $1 AND user_id = $2 RETURNING *;