Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 45x 507x 507x 507x 507x 45x 33x 33x 42x 42x 42x 42x 42x 2x 2x 40x 40x 33x 33x 33x 33x 40x 40x 40x 33x 45x 52x 52x 52x 44x 44x 32x 8x | import generator from "generate-serial-number";
import { MongoDbError } from "shared/types/api/errors";
import { formatSerial } from "shared/utils/formatSerial";
import {
Result,
makeErrorResult,
makeSuccessResult,
} from "shared/utils/result";
import {
SerialModel,
SerialSchemaDb,
} from "server/features/serial/serialSchema";
import { Serial } from "server/types/serialTypes";
import { logger } from "server/utils/logger";
export const removeSerials = async (): Promise<Result<void, MongoDbError>> => {
logger.info("MongoDB: remove ALL serials from db");
try {
await SerialModel.deleteMany({});
return makeSuccessResult();
} catch (error) {
logger.error(
new Error("MongoDB: Error removing serials", { cause: error }),
);
return makeErrorResult(MongoDbError.UNKNOWN_ERROR);
}
};
export const saveSerials = async (
count: number,
): Promise<Result<Serial[], MongoDbError>> => {
const serials: Serial[] = [];
for (let i = 1; i <= count; i += 1) {
const serial = generator.generate(10);
const rawSerials = serials.map((s) => s.serial);
const findSerialResult = await findSerial(serial);
Iif (!findSerialResult.ok) {
return makeErrorResult(MongoDbError.UNKNOWN_ERROR);
}
if (findSerialResult.value || rawSerials.includes(serial)) {
i -= 1;
continue;
}
serials.push(new SerialModel({ serial }));
logger.info(`MongoDB: Created new serial: ${formatSerial(serial)}`);
}
try {
const response = await SerialModel.create(serials);
logger.info(
`MongoDB: Serials data saved. (${serials.length} serials saved)`,
);
const results = response.flatMap((serial) => {
const result = SerialSchemaDb.safeParse(serial);
Iif (!result.success) {
logger.error(
new Error(`Error validating saveSerials DB value`, {
cause: result.error,
}),
);
return [];
}
return result.data;
});
return makeSuccessResult(results);
} catch (error) {
logger.error(
new Error("MongoDB: Error saving serials data", { cause: error }),
);
return makeErrorResult(MongoDbError.UNKNOWN_ERROR);
}
};
export const findSerial = async (
serial: string,
): Promise<Result<boolean, MongoDbError>> => {
let response;
try {
response = await SerialModel.findOne({ serial }).lean();
} catch (error) {
logger.error(
new Error(`MongoDB: Error finding serial ${serial}`, { cause: error }),
);
return makeErrorResult(MongoDbError.UNKNOWN_ERROR);
}
if (!response) {
logger.debug(`MongoDB: Serial ${serial} not found`);
return makeSuccessResult(false);
}
logger.debug(`MongoDB: Found serial ${serial}`);
return makeSuccessResult(true);
};
|