date time
This commit is contained in:
@@ -11,10 +11,70 @@ const EMAIL_CONFIRMATION_EXPIRES_MS = Number(process.env.EMAIL_CONFIRMATION_EXPI
|
||||
let emailConfirmationSchemaPromise;
|
||||
let applicationOpenUrlSchemaPromise;
|
||||
|
||||
function padDatePart(value) {
|
||||
return String(value).padStart(2, '0');
|
||||
}
|
||||
|
||||
function getLocalDateInputValue(value = new Date()) {
|
||||
const date = value instanceof Date ? value : new Date(value);
|
||||
const safeDate = Number.isNaN(date.getTime()) ? new Date() : date;
|
||||
|
||||
return [
|
||||
safeDate.getFullYear(),
|
||||
padDatePart(safeDate.getMonth() + 1),
|
||||
padDatePart(safeDate.getDate())
|
||||
].join('-');
|
||||
}
|
||||
|
||||
function getUtcDateInputValue(value) {
|
||||
return [
|
||||
value.getUTCFullYear(),
|
||||
padDatePart(value.getUTCMonth() + 1),
|
||||
padDatePart(value.getUTCDate())
|
||||
].join('-');
|
||||
}
|
||||
|
||||
function parseDateInputValue(value) {
|
||||
if (typeof value !== 'string') return '';
|
||||
|
||||
const match = /^(\d{4})-(\d{2})-(\d{2})(?:T.*)?$/.exec(value.trim());
|
||||
if (!match) return '';
|
||||
|
||||
const year = Number(match[1]);
|
||||
const month = Number(match[2]);
|
||||
const day = Number(match[3]);
|
||||
const date = new Date(Date.UTC(year, month - 1, day));
|
||||
|
||||
if (
|
||||
date.getUTCFullYear() !== year
|
||||
|| date.getUTCMonth() !== month - 1
|
||||
|| date.getUTCDate() !== day
|
||||
) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return `${match[1]}-${match[2]}-${match[3]}`;
|
||||
}
|
||||
|
||||
function toDateInputValue(value) {
|
||||
const date = value ? new Date(value) : new Date();
|
||||
if (Number.isNaN(date.getTime())) return new Date().toISOString().slice(0, 10);
|
||||
return date.toISOString().slice(0, 10);
|
||||
if (!value) return '';
|
||||
|
||||
const parsedDateInput = parseDateInputValue(value);
|
||||
if (parsedDateInput) return parsedDateInput;
|
||||
|
||||
const date = value instanceof Date ? value : new Date(value);
|
||||
if (Number.isNaN(date.getTime())) return '';
|
||||
|
||||
return getUtcDateInputValue(date);
|
||||
}
|
||||
|
||||
function toReleaseDateValue(value) {
|
||||
return toDateInputValue(value) || getLocalDateInputValue();
|
||||
}
|
||||
|
||||
function toSqlDateTime2Date(value) {
|
||||
const [year, month, day] = toReleaseDateValue(value).split('-').map(Number);
|
||||
return new Date(Date.UTC(year, month - 1, day));
|
||||
}
|
||||
|
||||
function formatDate(value) {
|
||||
@@ -1133,7 +1193,7 @@ async function createPackageWithVersion(input) {
|
||||
.input('FileChecksumSha256', sql.Char(64), input.checksum || null)
|
||||
.input('FileSizeBytes', sql.BigInt, input.fileSizeBytes || null)
|
||||
.input('ChangeLog', sql.NVarChar(sql.MAX), input.changeLog || null)
|
||||
.input('ReleaseDate', sql.DateTime2, input.releaseDate ? new Date(input.releaseDate) : new Date())
|
||||
.input('ReleaseDate', sql.DateTime2, toSqlDateTime2Date(input.releaseDate))
|
||||
.query(`
|
||||
INSERT dbo.PackageVersions (
|
||||
PackageId, Version, FilePath, DockerImage, FileChecksumSha256,
|
||||
@@ -1175,7 +1235,7 @@ async function addPackageVersion(input) {
|
||||
.input('FileChecksumSha256', sql.Char(64), input.checksum || null)
|
||||
.input('FileSizeBytes', sql.BigInt, input.fileSizeBytes || null)
|
||||
.input('ChangeLog', sql.NVarChar(sql.MAX), input.changeLog || null)
|
||||
.input('ReleaseDate', sql.DateTime2, input.releaseDate ? new Date(input.releaseDate) : new Date())
|
||||
.input('ReleaseDate', sql.DateTime2, toSqlDateTime2Date(input.releaseDate))
|
||||
.query(`
|
||||
INSERT dbo.PackageVersions (
|
||||
PackageId, Version, FilePath, DockerImage, FileChecksumSha256,
|
||||
@@ -1213,7 +1273,7 @@ async function replacePackageVersionArtifact(input) {
|
||||
.input('FileChecksumSha256', sql.Char(64), input.checksum || null)
|
||||
.input('FileSizeBytes', sql.BigInt, input.fileSizeBytes || null)
|
||||
.input('ChangeLog', sql.NVarChar(sql.MAX), input.changeLog || null)
|
||||
.input('ReleaseDate', sql.DateTime2, input.releaseDate ? new Date(input.releaseDate) : new Date())
|
||||
.input('ReleaseDate', sql.DateTime2, toSqlDateTime2Date(input.releaseDate))
|
||||
.query(`
|
||||
UPDATE dbo.PackageVersions
|
||||
SET FilePath = @FilePath,
|
||||
|
||||
Reference in New Issue
Block a user