import { get } from "http"

import { getUser, supabase } from "@/config/auth"

export default async function UploadFile(form: any) {
  let courseName = await getCourseName(form.course_id)
  let subjectName = await getSubjectName(form.subject_id)
  let subjectCode = await getSubjectCode(form.subject_id)
  const filePath = `${courseName}/${form.year}/${subjectName}/${form.file.name}`
  const { data, error } = await supabase.storage
    .from("Resources")
    .upload(filePath, form.file)
  if (!error) {
    var downloadUrl = await getDownloadUrl(filePath)
  }
  let userId = await getUserId()
  let userName = await getUserName()
  const dbValues = () => {
    return {
      course_id: form.course_id,
      course_name: courseName,
      course_year: form.year,
      subject_id: form.subject_id,
      subject_name: subjectName,
      subject_code: subjectCode,
      title: form.title,
      lesson: form.lesson,
      url: downloadUrl.publicUrl,
      author_id: userId,
      author_name: userName,
    }
  }
  console.log(dbValues())
  updateDB(dbValues())
}

async function getDownloadUrl(filePath: string) {
  const { data } = supabase.storage.from("Resources").getPublicUrl(filePath, {
    download: true,
  })
  return data
}

async function getCourseName(courseId: string) {
  const { data, error } = await supabase
    .from("course")
    .select("course_name")
    .eq("course_id", courseId)
  if (error) {
    console.log(error)
  }
  if (data) return data[0].course_name
}

async function getSubjectName(subjectId: string) {
  const { data, error } = await supabase
    .from("subject")
    .select("subject_name")
    .eq("subject_id", subjectId)
  if (error) {
    console.log(error)
  }
  if (data) return data[0].subject_name
}

async function getSubjectCode(subjectId: string) {
  const { data, error } = await supabase
    .from("subject")
    .select("subject_code")
    .eq("subject_id", subjectId)
  if (error) {
    console.log(error)
  }
  if (data) return data[0].subject_code
}

async function updateDB(dbValues: any) {
  const { data, error } = await supabase.from("resources").insert(dbValues)
  return { data, error }
}

async function getUserId() {
  const { data } = await getUser()
  return data?.user?.id
}

async function getUserName() {
  const { data } = await getUser()
  return data?.user?.user_metadata?.username
}
Edit Report
Pub: 24 Jul 2023 16:18 UTC
Views: 112