VA_TASK_TIDYTaskForm.tsx1 match
8}
910export default function TaskForm({ onTasksSubmitted, userEmail }: TaskFormProps) {
11const [formData, setFormData] = useState<TaskFormData>({
12name: '',
VA_TASK_TIDYApp.tsx1 match
5import type { DashboardData } from "../../shared/types.ts";
67export default function App() {
8const [currentView, setCurrentView] = useState<'form' | 'dashboard'>('form');
9const [userEmail, setUserEmail] = useState<string>('');
JobMegChatRoom.tsx1 match
3import type { ChatMessage, CreateChatMessageRequest, ApiResponse } from "../../shared/types.ts";
45export default function ChatRoom() {
6const [messages, setMessages] = useState<ChatMessage[]>([]);
7const [loading, setLoading] = useState(true);
VA_TASK_TIDYqueries.ts11 matches
2import type { User, DailyTasks, TaskCompletion, TaskFormData, DashboardData } from "../../shared/types.ts";
34export async function createOrUpdateUser(data: TaskFormData): Promise<User> {
5// Try to find existing user by email
6const existingUser = await sqlite.execute(
28}
2930export async function saveDailyTasks(userId: number, tasks: TaskFormData): Promise<DailyTasks> {
31const today = new Date().toISOString().split('T')[0];
32
41}
4243export async function getUserByEmail(email: string): Promise<User | null> {
44const result = await sqlite.execute(
45"SELECT * FROM users WHERE email = ?",
49}
5051export async function getUserById(userId: number): Promise<User | null> {
52const result = await sqlite.execute(
53"SELECT * FROM users WHERE id = ?",
57}
5859export async function getTodaysTasks(userId: number): Promise<DailyTasks | null> {
60const today = new Date().toISOString().split('T')[0];
61const result = await sqlite.execute(
66}
6768export async function getTasksForDate(userId: number, date: string): Promise<DailyTasks | null> {
69const result = await sqlite.execute(
70"SELECT * FROM daily_tasks WHERE user_id = ? AND date = ?",
74}
7576export async function recordTaskCompletion(userId: number, completed: boolean, date?: string): Promise<TaskCompletion> {
77const targetDate = date || new Date().toISOString().split('T')[0];
78
86}
8788export async function markReminderSent(userId: number, date: string): Promise<void> {
89await sqlite.execute(
90"UPDATE task_completions SET reminder_sent = TRUE WHERE user_id = ? AND date = ?",
93}
9495export async function getUsersNeedingEveningReminder(): Promise<User[]> {
96const today = new Date().toISOString().split('T')[0];
97
108}
109110export async function getUsersNeedingMorningReminder(): Promise<User[]> {
111const yesterday = new Date();
112yesterday.setDate(yesterday.getDate() - 1);
124}
125126export async function getDashboardData(userId: number): Promise<DashboardData> {
127const user = await getUserById(userId);
128if (!user) throw new Error("User not found");
JobMegJobForm.tsx1 match
7}
89export default function JobForm({ onJobPosted }: JobFormProps) {
10const [formData, setFormData] = useState<CreateJobRequest>({
11title: '',
JobMegJobBoard.tsx1 match
3import type { Job, ApiResponse } from "../../shared/types.ts";
45export default function JobBoard() {
6const [jobs, setJobs] = useState<Job[]>([]);
7const [loading, setLoading] = useState(true);
7type Tab = 'jobs' | 'post-job' | 'chat';
89export default function App() {
10const [activeTab, setActiveTab] = useState<Tab>('jobs');
11
JobMegqueries.ts5 matches
45// Job queries
6export async function getAllJobs(): Promise<Job[]> {
7const result = await sqlite.execute(`
8SELECT * FROM ${JOBS_TABLE}
12}
1314export async function getJobById(id: number): Promise<Job | null> {
15const result = await sqlite.execute(`
16SELECT * FROM ${JOBS_TABLE}
21}
2223export async function createJob(jobData: CreateJobRequest): Promise<Job> {
24const result = await sqlite.execute(`
25INSERT INTO ${JOBS_TABLE} (
4647// Chat queries
48export async function getChatMessages(limit: number = 50): Promise<ChatMessage[]> {
49const result = await sqlite.execute(`
50SELECT * FROM ${CHAT_MESSAGES_TABLE}
57}
5859export async function createChatMessage(messageData: CreateChatMessageRequest): Promise<ChatMessage> {
60const result = await sqlite.execute(`
61INSERT INTO ${CHAT_MESSAGES_TABLE} (username, message)
JobMegmigrations.ts1 match
5export const CHAT_MESSAGES_TABLE = 'chat_messages_v1';
67export async function runMigrations() {
8// Create jobs table
9await sqlite.execute(`