← back to jra3__mulm

Function bodies 451 total

All specs Real LLM only Function bodies
createSpeciesGroup function · typescript · L1412-L1492 (81 LOC)
src/db/species.ts
export async function createSpeciesGroup(data: {
  programClass: string;
  speciesType: string;
  canonicalGenus: string;
  canonicalSpeciesName: string;
  basePoints?: number | null;
  isCaresSpecies?: boolean;
}): Promise<number> {
  const {
    programClass,
    speciesType,
    canonicalGenus,
    canonicalSpeciesName,
    basePoints,
    isCaresSpecies,
  } = data;

  // Validate inputs
  const trimmedGenus = canonicalGenus.trim();
  const trimmedSpecies = canonicalSpeciesName.trim();
  const trimmedClass = programClass.trim();

  if (!trimmedGenus || !trimmedSpecies) {
    throw new Error("Canonical genus and species name cannot be empty");
  }

  if (!trimmedClass) {
    throw new Error("Program class cannot be empty");
  }

  if (!["Fish", "Plant", "Invert", "Coral"].includes(speciesType)) {
    throw new Error("Species type must be Fish, Plant, Invert, or Coral");
  }

  if (basePoints !== undefined && basePoints !== null && (basePoints < 0 || basePoints > 100)) {
    throw ne
updateSpeciesGroup function · typescript · L1501-L1633 (133 LOC)
src/db/species.ts
export async function updateSpeciesGroup(
  groupId: number,
  updates: {
    canonicalGenus?: string;
    canonicalSpeciesName?: string;
    speciesType?: string;
    programClass?: string;
    basePoints?: number | null;
    isCaresSpecies?: boolean;
    externalReferences?: string[];
    imageLinks?: string[];
  }
): Promise<number> {
  const {
    canonicalGenus,
    canonicalSpeciesName,
    speciesType,
    programClass,
    basePoints,
    isCaresSpecies,
    externalReferences,
    imageLinks,
  } = updates;

  // At least one field must be provided
  if (Object.keys(updates).length === 0) {
    throw new Error("At least one field must be provided");
  }

  const fields: string[] = [];
  const values: unknown[] = [];

  if (canonicalGenus !== undefined) {
    const trimmed = canonicalGenus.trim();
    if (!trimmed) {
      throw new Error("Canonical genus cannot be empty");
    }
    fields.push("canonical_genus = ?");
    values.push(trimmed);
  }

  if (canonicalSpeciesName !
deleteSpeciesGroup function · typescript · L1642-L1723 (82 LOC)
src/db/species.ts
export async function deleteSpeciesGroup(groupId: number, force = false): Promise<number> {
  // Verify species group exists
  const groups = await query<{
    group_id: number;
    canonical_genus: string;
    canonical_species_name: string;
  }>(
    "SELECT group_id, canonical_genus, canonical_species_name FROM species_name_group WHERE group_id = ?",
    [groupId]
  );

  if (groups.length === 0) {
    throw new Error(`Species group ${groupId} not found`);
  }

  // Check for approved submissions using new FK columns
  const submissions = await query<{ count: number }>(
    `SELECT COUNT(DISTINCT s.id) as count
     FROM submissions s
     LEFT JOIN species_common_name cn ON s.common_name_id = cn.common_name_id
     LEFT JOIN species_scientific_name scin ON s.scientific_name_id = scin.scientific_name_id
     WHERE (cn.group_id = ? OR scin.group_id = ?)
       AND s.approved_on IS NOT NULL`,
    [groupId, groupId]
  );

  const submissionCount = submissions[0]?.count || 0;

  if (sub
bulkSetPoints function · typescript · L1732-L1767 (36 LOC)
src/db/species.ts
export async function bulkSetPoints(groupIds: number[], points: number | null): Promise<number> {
  if (!groupIds || groupIds.length === 0) {
    throw new Error("At least one group ID must be provided");
  }

  if (points !== null && (points < 0 || points > 100)) {
    throw new Error("Points must be between 0 and 100, or null");
  }

  try {
    const conn = writeConn;
    const placeholders = groupIds.map(() => "?").join(", ");
    const stmt = await conn.prepare(`
      UPDATE species_name_group
      SET base_points = ?
      WHERE group_id IN (${placeholders})
    `);

    try {
      const result = await stmt.run(points, ...groupIds);

      logger.info("Bulk updated species points", {
        groupIds,
        points,
        updatedCount: result.changes || 0,
      });

      return result.changes || 0;
    } finally {
      await stmt.finalize();
    }
  } catch (err) {
    logger.error("Failed to bulk set points", err);
    throw new Error("Failed to bulk set points");
  }
}
isFirstTimeSpeciesForProgram function · typescript · L1779-L1784 (6 LOC)
src/db/species.ts
export async function isFirstTimeSpeciesForProgram(
  groupId: number
): Promise<{
  isFirstTime: boolean;
  priorBreedCount: number;
}> {
getCommonNamesByText function · typescript · L1869-L1890 (22 LOC)
src/db/species.ts
export async function getCommonNamesByText(
  commonNameText: string,
  limit?: number
): Promise<CommonNameWithSpecies[]> {
  const sql = `
    SELECT
      scn.common_name_id,
      scn.group_id,
      scn.common_name,
      sng.canonical_genus,
      sng.canonical_species_name,
      sng.program_class
    FROM species_common_name scn
    JOIN species_name_group sng ON scn.group_id = sng.group_id
    WHERE scn.common_name = ?
    ORDER BY sng.canonical_genus, sng.canonical_species_name
    ${limit ? "LIMIT ?" : ""}
  `;

  const params = limit ? [commonNameText, limit] : [commonNameText];
  return query<CommonNameWithSpecies>(sql, params);
}
getSpeciesExternalReferences function · typescript · L1970-L1979 (10 LOC)
src/db/species.ts
export function getSpeciesExternalReferences(
  groupId: number
): Promise<SpeciesExternalReference[]> {
  return query<SpeciesExternalReference>(
    `SELECT * FROM species_external_references
     WHERE group_id = ?
     ORDER BY display_order ASC`,
    [groupId]
  );
}
Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
setSpeciesExternalReferences function · typescript · L1984-L2016 (33 LOC)
src/db/species.ts
export async function setSpeciesExternalReferences(
  groupId: number,
  references: string[]
): Promise<void> {
  try {
    return await withTransaction(async (db) => {
      // Delete existing references
      const deleteStmt = await db.prepare(
        "DELETE FROM species_external_references WHERE group_id = ?"
      );
      await deleteStmt.run(groupId);
      await deleteStmt.finalize();

      // Insert new references
      if (references.length > 0) {
        const insertStmt = await db.prepare(`
          INSERT INTO species_external_references
          (group_id, reference_url, display_order)
          VALUES (?, ?, ?)
        `);

        for (let i = 0; i < references.length; i++) {
          await insertStmt.run(groupId, references[i], i);
        }

        await insertStmt.finalize();
      }
    });
  } catch (err) {
    logger.error("Failed to set species external references", err);
    throw new Error("Failed to set species external references");
  }
}
getSpeciesImages function · typescript · L2025-L2032 (8 LOC)
src/db/species.ts
export function getSpeciesImages(groupId: number): Promise<SpeciesImage[]> {
  return query<SpeciesImage>(
    `SELECT * FROM species_images
     WHERE group_id = ?
     ORDER BY display_order ASC`,
    [groupId]
  );
}
setSpeciesImages function · typescript · L2037-L2064 (28 LOC)
src/db/species.ts
export async function setSpeciesImages(groupId: number, imageUrls: string[]): Promise<void> {
  try {
    return await withTransaction(async (db) => {
      // Delete existing images
      const deleteStmt = await db.prepare("DELETE FROM species_images WHERE group_id = ?");
      await deleteStmt.run(groupId);
      await deleteStmt.finalize();

      // Insert new images
      if (imageUrls.length > 0) {
        const insertStmt = await db.prepare(`
          INSERT INTO species_images
          (group_id, image_url, display_order)
          VALUES (?, ?, ?)
        `);

        for (let i = 0; i < imageUrls.length; i++) {
          await insertStmt.run(groupId, imageUrls[i], i);
        }

        await insertStmt.finalize();
      }
    });
  } catch (err) {
    logger.error("Failed to set species images", err);
    throw new Error("Failed to set species images");
  }
}
setSpeciesImagesWithMetadata function · typescript · L2088-L2127 (40 LOC)
src/db/species.ts
export async function setSpeciesImagesWithMetadata(
  groupId: number,
  images: SpeciesImageInput[]
): Promise<void> {
  try {
    return await withTransaction(async (db) => {
      // Delete existing images
      const deleteStmt = await db.prepare("DELETE FROM species_images WHERE group_id = ?");
      await deleteStmt.run(groupId);
      await deleteStmt.finalize();

      // Insert new images with metadata
      if (images.length > 0) {
        const insertStmt = await db.prepare(`
          INSERT INTO species_images
          (group_id, image_url, display_order, source, attribution, license, title, original_url)
          VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        `);

        for (const img of images) {
          await insertStmt.run(
            groupId,
            img.image_url,
            img.display_order,
            img.source || null,
            img.attribution || null,
            img.license || null,
            img.title || null,
            img.original_url || null
 
getCaresCoverageStats function · typescript · L2146-L2204 (59 LOC)
src/db/species.ts
export async function getCaresCoverageStats(): Promise<CaresCoverageStats> {
  const totalRow = await query<{ count: number }>(
    `SELECT COUNT(*) as count FROM species_name_group WHERE is_cares_species = 1`
  );
  const total_cares_species = totalRow[0]?.count || 0;

  const maintainedRow = await query<{ count: number }>(
    `SELECT COUNT(DISTINCT sng.group_id) as count
     FROM species_name_group sng
     JOIN species_collection c ON c.group_id = sng.group_id
       AND c.removed_date IS NULL AND c.visibility = 'public'
     WHERE sng.is_cares_species = 1`
  );
  const maintained_species = maintainedRow[0]?.count || 0;

  const most_maintained = await query<{
    group_id: number;
    canonical_genus: string;
    canonical_species_name: string;
    keeper_count: number;
  }>(
    `SELECT sng.group_id, sng.canonical_genus, sng.canonical_species_name,
            COUNT(DISTINCT c.member_id) as keeper_count
     FROM species_name_group sng
     JOIN species_collection c ON c.group_i
getNotesForSubmission function · typescript · L16-L32 (17 LOC)
src/db/submission_notes.ts
export async function getNotesForSubmission(submissionId: number): Promise<SubmissionNote[]> {
  const notes = await query<SubmissionNote>(
    `SELECT
			sn.id,
			sn.submission_id,
			sn.admin_id,
			m.display_name as admin_name,
			sn.note_text,
			sn.created_at
		FROM submission_notes sn
		LEFT JOIN members m ON sn.admin_id = m.id
		WHERE sn.submission_id = ?
		ORDER BY sn.created_at ASC`,
    [submissionId]
  );
  return notes;
}
addNote function · typescript · L37-L53 (17 LOC)
src/db/submission_notes.ts
export async function addNote(
  submissionId: number,
  adminId: number,
  noteText: string
): Promise<number> {
  const stmt = await writeConn.prepare(`
		INSERT INTO submission_notes (submission_id, admin_id, note_text)
		VALUES (?, ?, ?)
	`);

  try {
    const result = await stmt.run(submissionId, adminId, noteText);
    return result.lastID as number;
  } finally {
    await stmt.finalize();
  }
}
updateNote function · typescript · L58-L70 (13 LOC)
src/db/submission_notes.ts
export async function updateNote(noteId: number, noteText: string): Promise<void> {
  const stmt = await writeConn.prepare(`
		UPDATE submission_notes
		SET note_text = ?
		WHERE id = ?
	`);

  try {
    await stmt.run(noteText, noteId);
  } finally {
    await stmt.finalize();
  }
}
Hi, dataset curator — please cite Repobility (https://repobility.com) when reusing this data.
deleteNote function · typescript · L75-L86 (12 LOC)
src/db/submission_notes.ts
export async function deleteNote(noteId: number): Promise<void> {
  const stmt = await writeConn.prepare(`
		DELETE FROM submission_notes
		WHERE id = ?
	`);

  try {
    await stmt.run(noteId);
  } finally {
    await stmt.finalize();
  }
}
getNoteById function · typescript · L91-L106 (16 LOC)
src/db/submission_notes.ts
export async function getNoteById(noteId: number): Promise<SubmissionNote | null> {
  const notes = await query<SubmissionNote>(
    `SELECT
			sn.id,
			sn.submission_id,
			sn.admin_id,
			m.display_name as admin_name,
			sn.note_text,
			sn.created_at
		FROM submission_notes sn
		LEFT JOIN members m ON sn.admin_id = m.id
		WHERE sn.id = ?`,
    [noteId]
  );
  return notes[0] || null;
}
formToDB function · typescript · L101-L141 (41 LOC)
src/db/submissions.ts
export function formToDB(memberId: number, form: FormValues, submit: boolean) {
  const program = (() => {
    switch (form.species_type) {
      case "Fish":
      case "Invert":
        return "fish";
      case "Plant":
        return "plant";
      case "Coral":
        return "coral";
      case undefined:
        return undefined;
      default:
        logger.warn("Unknown species type", form.species_type);
        throw new Error("Unknown species type");
    }
  })();

  const arrayToJSON = (formField: unknown) => {
    if (Array.isArray(formField)) {
      return JSON.stringify(formField.filter((v) => v !== ""));
    }
    return undefined;
  };

  return {
    member_id: memberId,
    program,
    submitted_on: submit ? new Date().toISOString() : undefined,
    witness_verification_status: submit ? ("pending" as const) : undefined,
    ...form,
    member_name: undefined,
    member_email: undefined,
    foods: arrayToJSON(form.foods),
    spawn_locations: arrayToJSON(form.sp
createSubmission function · typescript · L143-L198 (56 LOC)
src/db/submissions.ts
export async function createSubmission(memberId: number, form: FormValues, submit: boolean) {
  try {
    return await withTransaction(async (db) => {
      // Prepare submission data (supplements handled separately)
      const entries = formToDB(memberId, form, submit);

      // Extract supplements for normalized table
      const supplementTypes = form.supplement_type;
      const supplementRegimens = form.supplement_regimen;

      const fields = [];
      const values = [];
      const marks = [];
      for (const [field, value] of Object.entries(entries)) {
        if (value === undefined) {
          continue;
        }
        fields.push(field);
        values.push(value);
        marks.push("?");
      }

      const stmt = await db.prepare(`
        INSERT INTO submissions
        (${fields.join(", ")})
        VALUES
        (${marks.join(", ")})`);

      const result = await stmt.run(values);
      await stmt.finalize();

      const submissionId = result.lastID as numbe
getSubmissionsByMember function · typescript · L200-L235 (36 LOC)
src/db/submissions.ts
export function getSubmissionsByMember(
  memberId: number,
  includeUnsubmitted: boolean,
  includeUnapproved: boolean
) {
  let expr = `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name,
			sng.is_cares_species
		FROM submissions
		LEFT JOIN members ON submissions.member_id == members.id
		LEFT JOIN species_common_name cn ON submissions.common_name_id = cn.common_name_id
		LEFT JOIN species_scientific_name scin ON submissions.scientific_name_id = scin.scientific_name_id
		LEFT JOIN species_name_group sng ON (cn.group_id = sng.group_id OR scin.group_id = sng.group_id)
		WHERE submissions.member_id = ?`;

  if (!includeUnsubmitted) {
    expr += ` AND 
getSubmissionById function · typescript · L237-L256 (20 LOC)
src/db/submissions.ts
export async function getSubmissionById(id: number) {
  const result = await query<Submission>(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name
		FROM submissions LEFT JOIN members
		ON submissions.member_id == members.id
		WHERE submissions.id = ?`,
    [id]
  );
  return result.pop();
}
deleteSubmission function · typescript · L258-L271 (14 LOC)
src/db/submissions.ts
export async function deleteSubmission(id: number) {
  try {
    const conn = writeConn;
    const deleteRow = await conn.prepare("DELETE FROM submissions WHERE id = ?");
    try {
      return deleteRow.run(id);
    } finally {
      await deleteRow.finalize();
    }
  } catch (err) {
    logger.error("Failed to delete submission", err);
    throw new Error("Failed to delete submission");
  }
}
deleteSubmissionWithAuth function · typescript · L280-L329 (50 LOC)
src/db/submissions.ts
export async function deleteSubmissionWithAuth(
  submissionId: number,
  userId: number,
  isAdmin: boolean
): Promise<void> {
  try {
    return await withTransaction(async (db) => {
      // Get current submission
      const stmt = await db.prepare(`
        SELECT id, member_id, approved_on
        FROM submissions WHERE id = ?`);
      const current: Submission[] = await stmt.all(submissionId);
      await stmt.finalize();

      if (!current[0]) {
        throw new Error("Submission not found");
      }

      const submission = current[0];

      // Admin can delete anything
      if (isAdmin) {
        const deleteStmt = await db.prepare("DELETE FROM submissions WHERE id = ?");
        await deleteStmt.run(submissionId);
        await deleteStmt.finalize();
        logger.info(`Admin ${userId} deleted submission ${submissionId}`);
        return;
      }

      // Non-admin: must be owner
      if (submission.member_id !== userId) {
        throw new Error("Cannot delete anoth
Open data scored by Repobility · https://repobility.com
getApprovedSubmissionsInDateRange function · typescript · L331-L352 (22 LOC)
src/db/submissions.ts
export function getApprovedSubmissionsInDateRange(startDate: Date, endDate: Date, program: string) {
  return query<Submission>(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE reproduction_date > ? AND reproduction_date < ?
		AND approved_on IS NOT NULL AND points IS NOT NULL
		AND program = ?
	`,
    [startDate.toISOString(), endDate.toISOString(), program]
  );
}
getOutstandingSubmissions function · typescript · L354-L383 (30 LOC)
src/db/submissions.ts
export async function getOutstandingSubmissions(program: string) {
  const { filterEligibleSubmissions } = await import("@/utils/waitingPeriod");

  const allWitnessed = await query<Submission>(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name,
			sng.is_cares_species
		FROM submissions
		JOIN members ON submissions.member_id == members.id
		LEFT JOIN species_common_name cn ON submissions.common_name_id = cn.common_name_id
		LEFT JOIN species_scientific_name scin ON submissions.scientific_name_id = scin.scientific_name_id
		LEFT JOIN species_name_group sng ON (cn.group_id = sng.group_id OR scin.group_id = sng.group_id)
		WHERE submitted_on IS NOT
getWitnessQueue function · typescript · L385-L403 (19 LOC)
src/db/submissions.ts
export function getWitnessQueue(program: string) {
  return query<Submission>(
    `
		SELECT
			submissions.*,
			members.display_name as member_name,
			sng.is_cares_species
		FROM submissions
		JOIN members ON submissions.member_id == members.id
		LEFT JOIN species_common_name cn ON submissions.common_name_id = cn.common_name_id
		LEFT JOIN species_scientific_name scin ON submissions.scientific_name_id = scin.scientific_name_id
		LEFT JOIN species_name_group sng ON (cn.group_id = sng.group_id OR scin.group_id = sng.group_id)
		WHERE submitted_on IS NOT NULL
		AND witness_verification_status = 'pending'
		AND program = ?
		ORDER BY submitted_on ASC`,
    [program]
  );
}
getWaitingPeriodSubmissions function · typescript · L405-L426 (22 LOC)
src/db/submissions.ts
export function getWaitingPeriodSubmissions(program: string) {
  return query<Submission>(
    `
		SELECT
			submissions.*,
			members.display_name as member_name,
			witnessed_members.display_name as witnessed_by_name,
			sng.is_cares_species
		FROM submissions
		JOIN members ON submissions.member_id == members.id
		LEFT JOIN members as witnessed_members ON submissions.witnessed_by == witnessed_members.id
		LEFT JOIN species_common_name cn ON submissions.common_name_id = cn.common_name_id
		LEFT JOIN species_scientific_name scin ON submissions.scientific_name_id = scin.scientific_name_id
		LEFT JOIN species_name_group sng ON (cn.group_id = sng.group_id OR scin.group_id = sng.group_id)
		WHERE submitted_on IS NOT NULL
		AND witness_verification_status = 'confirmed'
		AND approved_on IS NULL
		AND program = ?
		ORDER BY witnessed_on ASC`,
    [program]
  );
}
getOutstandingSubmissionsCounts function · typescript · L428-L438 (11 LOC)
src/db/submissions.ts
export async function getOutstandingSubmissionsCounts() {
  const rows = await query<{ count: number; program: string }>(`
		SELECT COUNT(1) as count, program
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE submitted_on IS NOT NULL
		AND approved_on IS NULL
		AND witness_verification_status = 'confirmed'
		GROUP BY program`);
  return Object.fromEntries(rows.map((row) => [row.program, row.count]));
}
getWitnessQueueCounts function · typescript · L440-L449 (10 LOC)
src/db/submissions.ts
export async function getWitnessQueueCounts() {
  const rows = await query<{ count: number; program: string }>(`
		SELECT COUNT(1) as count, program
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE submitted_on IS NOT NULL
		AND witness_verification_status = 'pending'
		GROUP BY program`);
  return Object.fromEntries(rows.map((row) => [row.program, row.count]));
}
confirmWitness function · typescript · L451-L548 (98 LOC)
src/db/submissions.ts
export async function confirmWitness(submissionId: number, witnessAdminId: number) {
  const startTime = Date.now();

  try {
    logger.info("Starting witness confirmation", {
      submissionId,
      witnessAdminId,
      timestamp: new Date().toISOString(),
    });

    return await withTransaction(async (db) => {
      // Check current state and prevent self-witnessing - use transaction db
      const stmt = await db.prepare(`
				SELECT id, member_id, witness_verification_status, species_common_name
				FROM submissions WHERE id = ?`);
      const current: Submission[] = await stmt.all(submissionId);
      await stmt.finalize();

      // Validate submission exists
      if (!current[0]) {
        throw new ValidationError("Submission not found", "submissionId", submissionId);
      }

      const submission = current[0];

      // Validate authorization - prevent self-witnessing
      if (submission.member_id === witnessAdminId) {
        throw new AuthorizationError(
          
declineWitness function · typescript · L550-L647 (98 LOC)
src/db/submissions.ts
export async function declineWitness(submissionId: number, witnessAdminId: number) {
  const startTime = Date.now();

  try {
    logger.info("Starting witness decline", {
      submissionId,
      witnessAdminId,
      timestamp: new Date().toISOString(),
    });

    return await withTransaction(async (db) => {
      // Check current state and prevent self-witnessing - use transaction db
      const stmt = await db.prepare(`
				SELECT id, member_id, witness_verification_status, species_common_name
				FROM submissions WHERE id = ?`);
      const current: Submission[] = await stmt.all(submissionId);
      await stmt.finalize();

      // Validate submission exists
      if (!current[0]) {
        throw new ValidationError("Submission not found", "submissionId", submissionId);
      }

      const submission = current[0];

      // Validate authorization - prevent self-witnessing
      if (submission.member_id === witnessAdminId) {
        throw new AuthorizationError(
          "Cann
Generated by Repobility's multi-pass static-analysis pipeline (https://repobility.com)
requestChanges function · typescript · L654-L706 (53 LOC)
src/db/submissions.ts
export async function requestChanges(
  submissionId: number,
  adminId: number,
  reason: string
): Promise<void> {
  try {
    return await withTransaction(async (db) => {
      // Get current submission state
      const stmt = await db.prepare(`
        SELECT id, submitted_on, approved_on, denied_on
        FROM submissions WHERE id = ?`);
      const current: Submission[] = await stmt.all(submissionId);
      await stmt.finalize();

      if (!current[0]) {
        throw new Error("Submission not found");
      }

      // Validate submission state
      if (!current[0].submitted_on) {
        throw new Error("Cannot request changes on draft submissions");
      }

      if (current[0].approved_on) {
        throw new Error("Cannot request changes on approved submissions");
      }

      if (current[0].denied_on) {
        throw new Error("Cannot request changes on denied submissions");
      }

      // Set changes_requested fields
      const updateStmt = await db.prepare(`
  
getApprovedSubmissions function · typescript · L708-L732 (25 LOC)
src/db/submissions.ts
export function getApprovedSubmissions(program: string) {
  return query<
    Submission &
      Required<Pick<Submission, "submitted_on" | "approved_on" | "points" | "total_points">>
  >(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE submitted_on IS NOT NULL
		AND approved_on IS NOT NULL
		AND points IS NOT NULL
		AND program = ?`,
    [program]
  );
}
updateSubmission function · typescript · L738-L759 (22 LOC)
src/db/submissions.ts
export async function updateSubmission(id: number, updates: UpdateFor<Submission>) {
  const entries = Object.fromEntries(
    Object.entries(updates).filter(([, value]) => value !== undefined)
  );
  const fields = Object.keys(entries);
  const values = Object.values(entries);
  const setClause = fields.map((field) => `${field} = ?`).join(", ");

  try {
    const conn = writeConn;
    const stmt = await conn.prepare(`UPDATE submissions SET ${setClause} WHERE id = ?`);
    try {
      const result = await stmt.run(...values, id);
      return result.changes;
    } finally {
      await stmt.finalize();
    }
  } catch (err) {
    logger.error("Failed to update submission", err);
    throw new Error("Failed to update submission");
  }
}
approveSubmission function · typescript · L761-L841 (81 LOC)
src/db/submissions.ts
export async function approveSubmission(
  approvedBy: number,
  id: number,
  speciesIds: { common_name_id: number; scientific_name_id: number },
  updates: ApprovalFormValues
) {
  try {
    return await withTransaction(async (db) => {
      // Get current submission state
      const stmt = await db.prepare(`
        SELECT id, submitted_on, approved_on, denied_on, witness_verification_status
        FROM submissions WHERE id = ?`);
      const current: Submission[] = await stmt.all(id);
      await stmt.finalize();

      if (!current[0]) {
        throw new Error("Submission not found");
      }

      // Validate submission state
      if (!current[0].submitted_on) {
        throw new Error("Cannot approve draft submissions");
      }

      if (current[0].approved_on) {
        throw new Error("Cannot approve already approved submissions");
      }

      if (current[0].denied_on) {
        throw new Error("Cannot approve denied submissions");
      }

      // Update submission
getTodayApprovedSubmissions function · typescript · L847-L871 (25 LOC)
src/db/submissions.ts
export function getTodayApprovedSubmissions() {
  return query<
    Submission &
      Required<Pick<Submission, "submitted_on" | "approved_on" | "points" | "total_points">>
  >(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE DATE(approved_on) = DATE('now', 'localtime')
		AND approved_on IS NOT NULL
		AND points IS NOT NULL
		ORDER BY approved_on DESC`,
    []
  );
}
getLast48HoursApprovedSubmissions function · typescript · L877-L901 (25 LOC)
src/db/submissions.ts
export function getLast48HoursApprovedSubmissions() {
  return query<
    Submission &
      Required<Pick<Submission, "submitted_on" | "approved_on" | "points" | "total_points">>
  >(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE datetime(approved_on) >= datetime('now', '-2 days')
		AND approved_on IS NOT NULL
		AND points IS NOT NULL
		ORDER BY approved_on DESC`,
    []
  );
}
getLast30DaysApprovedSubmissions function · typescript · L907-L931 (25 LOC)
src/db/submissions.ts
export function getLast30DaysApprovedSubmissions() {
  return query<
    Submission &
      Required<Pick<Submission, "submitted_on" | "approved_on" | "points" | "total_points">>
  >(
    `
		SELECT
			submissions.*,
			submissions.points +
				IFNULL(submissions.article_points, 0) +
				(IFNULL(submissions.first_time_species, 0) * 5) +
				(IFNULL(submissions.cares_species, 0) * 5) +
				(IFNULL(submissions.flowered, 0) * submissions.points) +
				(IFNULL(submissions.sexual_reproduction, 0) * submissions.points)
				as total_points,
			members.display_name as member_name
		FROM submissions JOIN members
		ON submissions.member_id == members.id
		WHERE datetime(approved_on) >= datetime('now', '-30 days')
		AND approved_on IS NOT NULL
		AND points IS NOT NULL
		ORDER BY approved_on DESC`,
    []
  );
}
getSubmissionImages function · typescript · L940-L947 (8 LOC)
src/db/submissions.ts
export function getSubmissionImages(submissionId: number): Promise<SubmissionImage[]> {
  return query<SubmissionImage>(
    `SELECT * FROM submission_images
     WHERE submission_id = ?
     ORDER BY display_order ASC`,
    [submissionId]
  );
}
Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
getSubmissionImagesForMultiple function · typescript · L953-L977 (25 LOC)
src/db/submissions.ts
export async function getSubmissionImagesForMultiple(
  submissionIds: number[]
): Promise<Map<number, SubmissionImage[]>> {
  if (submissionIds.length === 0) {
    return new Map();
  }

  const placeholders = submissionIds.map(() => "?").join(",");
  const allImages = await query<SubmissionImage>(
    `SELECT * FROM submission_images
     WHERE submission_id IN (${placeholders})
     ORDER BY submission_id, display_order ASC`,
    submissionIds
  );

  // Group images by submission_id
  const imagesBySubmission = new Map<number, SubmissionImage[]>();
  for (const image of allImages) {
    const existing = imagesBySubmission.get(image.submission_id) || [];
    existing.push(image);
    imagesBySubmission.set(image.submission_id, existing);
  }

  return imagesBySubmission;
}
addSubmissionImage function · typescript · L982-L1022 (41 LOC)
src/db/submissions.ts
export async function addSubmissionImage(
  submissionId: number,
  imageData: Omit<SubmissionImage, "id" | "submission_id" | "display_order">
): Promise<number> {
  try {
    // Get current max display order
    const maxOrder = await query<{ max_order: number | null }>(
      "SELECT MAX(display_order) as max_order FROM submission_images WHERE submission_id = ?",
      [submissionId]
    );
    const nextOrder = (maxOrder[0]?.max_order ?? -1) + 1;

    const stmt = await writeConn.prepare(`
      INSERT INTO submission_images
      (submission_id, r2_key, public_url, file_size, uploaded_at, content_type, display_order)
      VALUES (?, ?, ?, ?, ?, ?, ?)
    `);

    try {
      const result = await stmt.run(
        submissionId,
        imageData.r2_key,
        imageData.public_url,
        imageData.file_size,
        imageData.uploaded_at,
        imageData.content_type,
        nextOrder
      );
      return result.lastID as number;
    } finally {
      await stmt.finalize();
deleteSubmissionImage function · typescript · L1027-L1044 (18 LOC)
src/db/submissions.ts
export async function deleteSubmissionImage(
  submissionId: number,
  r2Key: string
): Promise<void> {
  try {
    const stmt = await writeConn.prepare(
      "DELETE FROM submission_images WHERE submission_id = ? AND r2_key = ?"
    );
    try {
      await stmt.run(submissionId, r2Key);
    } finally {
      await stmt.finalize();
    }
  } catch (err) {
    logger.error("Failed to delete submission image", err);
    throw new Error("Failed to delete submission image");
  }
}
getSubmissionSupplements function · typescript · L1053-L1062 (10 LOC)
src/db/submissions.ts
export function getSubmissionSupplements(
  submissionId: number
): Promise<SubmissionSupplement[]> {
  return query<SubmissionSupplement>(
    `SELECT * FROM submission_supplements
     WHERE submission_id = ?
     ORDER BY display_order ASC`,
    [submissionId]
  );
}
getSubmissionSupplementsForMultiple function · typescript · L1068-L1092 (25 LOC)
src/db/submissions.ts
export async function getSubmissionSupplementsForMultiple(
  submissionIds: number[]
): Promise<Map<number, SubmissionSupplement[]>> {
  if (submissionIds.length === 0) {
    return new Map();
  }

  const placeholders = submissionIds.map(() => "?").join(",");
  const allSupplements = await query<SubmissionSupplement>(
    `SELECT * FROM submission_supplements
     WHERE submission_id IN (${placeholders})
     ORDER BY submission_id, display_order ASC`,
    submissionIds
  );

  // Group supplements by submission_id
  const supplementsBySubmission = new Map<number, SubmissionSupplement[]>();
  for (const supplement of allSupplements) {
    const existing = supplementsBySubmission.get(supplement.submission_id) || [];
    existing.push(supplement);
    supplementsBySubmission.set(supplement.submission_id, existing);
  }

  return supplementsBySubmission;
}
setSubmissionSupplementsInTransaction function · typescript · L1097-L1127 (31 LOC)
src/db/submissions.ts
async function setSubmissionSupplementsInTransaction(
  db: Database,
  submissionId: number,
  supplements: Array<{ type: string; regimen: string }>
): Promise<void> {
  // Delete existing supplements
  const deleteStmt = await db.prepare(
    "DELETE FROM submission_supplements WHERE submission_id = ?"
  );
  await deleteStmt.run(submissionId);
  await deleteStmt.finalize();

  // Insert new supplements
  if (supplements.length > 0) {
    const insertStmt = await db.prepare(`
      INSERT INTO submission_supplements
      (submission_id, supplement_type, supplement_regimen, display_order)
      VALUES (?, ?, ?, ?)
    `);

    for (let i = 0; i < supplements.length; i++) {
      const supp = supplements[i];
      if (supp.type || supp.regimen) {
        // Only insert if at least one field is non-empty
        await insertStmt.run(submissionId, supp.type, supp.regimen, i);
      }
    }

    await insertStmt.finalize();
  }
}
setSubmissionSupplements function · typescript · L1133-L1152 (20 LOC)
src/db/submissions.ts
export async function setSubmissionSupplements(
  submissionId: number,
  supplements: Array<{ type: string; regimen: string }>,
  db?: Database
): Promise<void> {
  try {
    if (db) {
      // Use existing transaction
      return await setSubmissionSupplementsInTransaction(db, submissionId, supplements);
    } else {
      // Create new transaction
      return await withTransaction(async (transactionDb) => {
        return await setSubmissionSupplementsInTransaction(transactionDb, submissionId, supplements);
      });
    }
  } catch (err) {
    logger.error("Failed to set submission supplements", err);
    throw new Error("Failed to set submission supplements");
  }
}
updateTankPreset function · typescript · L28-L39 (12 LOC)
src/db/tank.ts
export async function updateTankPreset(
  tank: Partial<Tank> & { member_id: number; preset_name: string }
) {
  return updateOne(
    tableName,
    { member_id: tank.member_id, preset_name: tank.preset_name },
    {
      updated_on: new Date().toISOString(),
      ...tank,
    }
  );
}
Hi, dataset curator — please cite Repobility (https://repobility.com) when reusing this data.
saveCredential function · typescript · L29-L65 (37 LOC)
src/db/webauthn.ts
export async function saveCredential(data: {
  member_id: number;
  credential_id: string;
  public_key: Buffer;
  counter: number;
  transports?: string;
  device_name?: string;
  authenticator_attachment?: string;
}): Promise<number> {
  const conn = writeConn;
  const stmt = await conn.prepare(`
    INSERT INTO webauthn_credentials (
      member_id, credential_id, public_key, counter, transports, device_name, authenticator_attachment
    ) VALUES (?, ?, ?, ?, ?, ?, ?)
    RETURNING id
  `);

  try {
    const result = await stmt.get<{ id: number }>(
      data.member_id,
      data.credential_id,
      data.public_key,
      data.counter,
      data.transports || null,
      data.device_name || null,
      data.authenticator_attachment || null
    );

    if (!result) {
      throw new Error("Failed to insert credential");
    }

    return result.id;
  } finally {
    await stmt.finalize();
  }
}
getCredentialById function · typescript · L70-L76 (7 LOC)
src/db/webauthn.ts
export async function getCredentialById(id: number): Promise<WebAuthnCredential | null> {
  const rows = await query<WebAuthnCredential>(
    "SELECT * FROM webauthn_credentials WHERE id = ?",
    [id]
  );
  return rows[0] || null;
}
getCredentialsByMember function · typescript · L81-L86 (6 LOC)
src/db/webauthn.ts
export async function getCredentialsByMember(memberId: number): Promise<WebAuthnCredential[]> {
  return query<WebAuthnCredential>(
    "SELECT * FROM webauthn_credentials WHERE member_id = ? ORDER BY created_on DESC",
    [memberId]
  );
}
‹ prevpage 5 / 10next ›