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
}