mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
fix: check for modified functions by eszip hash (#40603)
This commit is contained in:
1 parent
a3ec8adeaa
commit
4766629ccf
1 file changed
+15
-12
@@ -86,10 +86,10 @@ export const useEdgeFunctionsDiff = ({
|
||||
const {
|
||||
added = [],
|
||||
removed = [],
|
||||
overlap = [],
|
||||
modified = [],
|
||||
} = useMemo(() => {
|
||||
if (!currentBranchFunctions || !mainBranchFunctions) {
|
||||
return { added: [], removed: [], overlap: [] as typeof currentBranchFunctions }
|
||||
return { added: [], removed: [], modified: [] }
|
||||
}
|
||||
|
||||
const currentFuncs = currentBranchFunctions ?? []
|
||||
@@ -97,18 +97,22 @@ export const useEdgeFunctionsDiff = ({
|
||||
|
||||
const added = currentFuncs.filter((c) => !mainFuncs.find((m) => m.slug === c.slug))
|
||||
const removed = mainFuncs.filter((m) => !currentFuncs.find((c) => c.slug === m.slug))
|
||||
const overlap = currentFuncs.filter((c) => mainFuncs.find((m) => m.slug === c.slug))
|
||||
const modified = currentFuncs.filter((c) =>
|
||||
mainFuncs.find(
|
||||
(m) => m.slug === c.slug && (m.ezbr_sha256 === undefined || m.ezbr_sha256 !== c.ezbr_sha256)
|
||||
)
|
||||
)
|
||||
|
||||
return { added, removed, overlap }
|
||||
return { added, removed, modified }
|
||||
}, [currentBranchFunctions, mainBranchFunctions])
|
||||
|
||||
const overlapSlugs = overlap.map((f) => f.slug)
|
||||
const addedSlugs = added.map((f) => f.slug)
|
||||
const removedSlugs = removed.map((f) => f.slug)
|
||||
const maybeModifiedSlugs = modified.map((f) => f.slug)
|
||||
|
||||
// Fetch function bodies ---------------------------------------------------
|
||||
const currentBodiesQueries = useQueries({
|
||||
queries: overlapSlugs.map((slug) => ({
|
||||
queries: maybeModifiedSlugs.map((slug) => ({
|
||||
queryKey: ['edge-function-body', currentBranchRef, slug],
|
||||
queryFn: ({ signal }: { signal?: AbortSignal }) =>
|
||||
getEdgeFunctionBody({ projectRef: currentBranchRef, slug }, signal),
|
||||
@@ -118,7 +122,7 @@ export const useEdgeFunctionsDiff = ({
|
||||
})
|
||||
|
||||
const mainBodiesQueries = useQueries({
|
||||
queries: overlapSlugs.map((slug) => ({
|
||||
queries: maybeModifiedSlugs.map((slug) => ({
|
||||
queryKey: ['edge-function-body', mainBranchRef, slug],
|
||||
queryFn: ({ signal }: { signal?: AbortSignal }) =>
|
||||
getEdgeFunctionBody({ projectRef: mainBranchRef, slug }, signal),
|
||||
@@ -173,12 +177,12 @@ export const useEdgeFunctionsDiff = ({
|
||||
// Build lookup maps --------------------------------------------------------
|
||||
const currentBodiesMap: Record<string, EdgeFunctionBodyData | undefined> = {}
|
||||
currentBodiesQueries.forEach((q, idx) => {
|
||||
if (q.data) currentBodiesMap[overlapSlugs[idx]] = q.data
|
||||
if (q.data) currentBodiesMap[maybeModifiedSlugs[idx]] = q.data
|
||||
})
|
||||
|
||||
const mainBodiesMap: Record<string, EdgeFunctionBodyData | undefined> = {}
|
||||
mainBodiesQueries.forEach((q, idx) => {
|
||||
if (q.data) mainBodiesMap[overlapSlugs[idx]] = q.data
|
||||
if (q.data) mainBodiesMap[maybeModifiedSlugs[idx]] = q.data
|
||||
})
|
||||
|
||||
const addedBodiesMap: Record<string, EdgeFunctionBodyData | undefined> = {}
|
||||
@@ -196,7 +200,7 @@ export const useEdgeFunctionsDiff = ({
|
||||
const functionFileInfo: FunctionFileInfo = {}
|
||||
|
||||
// Process overlapping functions to determine modifications and file info
|
||||
overlapSlugs.forEach((slug) => {
|
||||
maybeModifiedSlugs.forEach((slug) => {
|
||||
const currentBody = currentBodiesMap[slug]
|
||||
const mainBody = mainBodiesMap[slug]
|
||||
if (!currentBody || !mainBody) return
|
||||
@@ -229,9 +233,8 @@ export const useEdgeFunctionsDiff = ({
|
||||
|
||||
if (hasModifications) {
|
||||
modifiedSlugs.push(slug)
|
||||
functionFileInfo[slug] = fileInfos
|
||||
}
|
||||
|
||||
functionFileInfo[slug] = fileInfos
|
||||
})
|
||||
|
||||
// Add file info for added functions
|
||||
|
||||
Reference in new issue
Block a user