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 100 | 44x 423x 423x 423x 423x 44x 33x 33x 42x 42x 42x 42x 42x 2x 2x 40x 40x 33x 33x 33x 33x 40x 40x 40x 33x 44x 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[] = [];
// create serials
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);
};
|