#11 - Modify Utils

This commit is contained in:
Luciano Giacchetta 2025-08-20 14:59:28 -03:00
parent c007668002
commit 989a0dbb50
3 changed files with 30 additions and 20 deletions

View File

@ -1,28 +1,26 @@
import type { CollectionEntry } from 'astro:content';
import type { Courses } from '../types/codyops-courses';
export const getUniqueCategories = (
courses: Array<CollectionEntry<'courses'>>
courses: Courses[]
) => {
const coursesEntries = courses.flatMap(
// @ts-ignore
// eslint-disable-next-line no-unsafe-optional-chaining
(course: CollectionEntry<'courses'>) => [...course?.data?.categories]
(course: Courses) => [...course.category]
);
return [...new Set(coursesEntries)];
};
export const getUniqueLevels = (courses: CollectionEntry<'courses'>[]) => {
export const getUniqueLevels = (courses: Courses[]) => {
const coursesEntries = courses.map(
(course: CollectionEntry<'courses'>) => course.data.level
(course: Courses) => course.level
);
return [...new Set(coursesEntries)];
};
export const sortCoursesByDate = (posts: CollectionEntry<'courses'>[]) =>
posts
.filter(({ data }) => !data?.draft)
export const sortCoursesByDate = (courses: Courses[]) =>
courses
.filter((course) => course.status !== 'draft') // Assuming 'draft' status is used instead of a 'draft' property
.sort(
(a, b) =>
Math.floor(new Date(b?.data?.date).getTime() / 1000) -
Math.floor(new Date(a?.data?.date).getTime() / 1000)
Math.floor(new Date(b.date_created || '').getTime() / 1000) -
Math.floor(new Date(a.date_created || '').getTime() / 1000)
);

View File

@ -1,3 +1,3 @@
export const fromSnakeCase = (text: any) => {
return text.replace(/-/g, ' ').replace(/\b\w/g, (word) => word.toUpperCase());
export const fromSnakeCase = (text: string) => {
return text.replace(/-/g, ' ').replace(/\b\w/g, (word: string) => word.toUpperCase());
};

View File

@ -1,23 +1,35 @@
function parseTime(time) {
const [hours, minutes, milliseconds] = time.split(':').map(Number);
interface TimeParts {
hours: number;
minutes: number;
milliseconds: number;
}
interface TimeResult {
hours: number;
minutes: number;
}
function parseTime(time: string | null | undefined): TimeParts {
const safeTime = time || '0:0:0'; // Provide a default string if time is null/undefined/empty
const [hours, minutes, milliseconds] = safeTime.split(':').map(Number);
return { hours, minutes, milliseconds };
}
function timeToMilliseconds({ hours, minutes, milliseconds }) {
function timeToMilliseconds({ hours, minutes, milliseconds }: TimeParts): number {
return (hours * 60 * 60 * 1000) + (minutes * 60 * 1000) + milliseconds;
}
function millisecondsToTime(ms) {
function millisecondsToTime(ms: number): TimeResult {
const totalMinutes = Math.floor(ms / (60 * 1000));
const hours = Math.floor(totalMinutes / 60);
const minutes = totalMinutes % 60;
return { hours, minutes };
}
export function sumTimes(times) {
export function sumTimes(times: string[]): TimeResult {
const totalMilliseconds = times
.map(parseTime)
.map(timeToMilliseconds)
.reduce((acc, ms) => acc + ms, 0);
.reduce((acc: number, ms: number) => acc + ms, 0);
return millisecondsToTime(totalMilliseconds);
}