init
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import { supabase } from './supabase';
|
||||
import * as offline from './offlineStorage';
|
||||
import { todayISO } from '../utils/date';
|
||||
|
||||
// Must match authService.js
|
||||
const USE_OFFLINE = true;
|
||||
|
||||
export async function getHabits(identityId) {
|
||||
if (USE_OFFLINE) {
|
||||
return offline.getAll('habits', { identity_id: identityId });
|
||||
}
|
||||
|
||||
const { data, error } = await supabase
|
||||
.from('habits')
|
||||
.select('*')
|
||||
.eq('identity_id', identityId);
|
||||
|
||||
if (error) throw error;
|
||||
return data || [];
|
||||
}
|
||||
|
||||
export async function getTodayHabitLogs(habitIds) {
|
||||
if (!habitIds.length) return {};
|
||||
const today = todayISO();
|
||||
|
||||
if (USE_OFFLINE) {
|
||||
const allLogs = await offline.getAll('habit_logs');
|
||||
const logs = {};
|
||||
allLogs.forEach((log) => {
|
||||
if (habitIds.includes(log.habit_id) && log.date === today) {
|
||||
logs[log.habit_id] = log.completed;
|
||||
}
|
||||
});
|
||||
return logs;
|
||||
}
|
||||
|
||||
const { data, error } = await supabase
|
||||
.from('habit_logs')
|
||||
.select('*')
|
||||
.in('habit_id', habitIds)
|
||||
.eq('date', today);
|
||||
|
||||
if (error) throw error;
|
||||
|
||||
const logs = {};
|
||||
(data || []).forEach((log) => {
|
||||
logs[log.habit_id] = log.completed;
|
||||
});
|
||||
return logs;
|
||||
}
|
||||
|
||||
export async function saveHabitLog(habitId, completed) {
|
||||
const today = todayISO();
|
||||
|
||||
if (USE_OFFLINE) {
|
||||
await offline.upsert(
|
||||
'habit_logs',
|
||||
{ habit_id: habitId, date: today },
|
||||
{ completed }
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const { data: existing } = await supabase
|
||||
.from('habit_logs')
|
||||
.select('id')
|
||||
.eq('habit_id', habitId)
|
||||
.eq('date', today)
|
||||
.maybeSingle();
|
||||
|
||||
if (existing) {
|
||||
const { error } = await supabase
|
||||
.from('habit_logs')
|
||||
.update({ completed })
|
||||
.eq('id', existing.id);
|
||||
if (error) throw error;
|
||||
} else {
|
||||
const { error } = await supabase
|
||||
.from('habit_logs')
|
||||
.insert({ habit_id: habitId, date: today, completed });
|
||||
if (error) throw error;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user