async update()

in libs/newsletters-data-client/src/lib/layout-storage/S3LayoutStorage.ts [123:160]


	async update(
		edition: EditionId,
		layout: Layout,
	): Promise<SuccessfulStorageResponse<Layout> | UnsuccessfulStorageResponse> {
		const filename = this.editionIdToFileName(edition);

		const parseResult = layoutSchema.safeParse(layout);
		if (!parseResult.success) {
			return {
				ok: false,
				message: 'layout in wrong format',
				reason: StorageRequestFailureReason.InvalidDataInput,
			};
		}

		try {
			try {
				await this.putObject(layout, filename);
			} catch (err) {
				return {
					ok: false,
					message: `failed update layout ${edition}.`,
					reason: StorageRequestFailureReason.S3Failure,
				};
			}
			return {
				ok: true,
				data: layout,
			};
		} catch (error) {
			console.error(error);
			return {
				ok: false,
				message: `failed to update newsletter ${edition}`,
				reason: StorageRequestFailureReason.S3Failure,
			};
		}
	}