Files
qbit-backups/src/main/java/com/kingsrook/qbits/backups/codec/RowCodec.java
T
james.maesandClaude Sonnet 5.5 eea9f63878 feat: backups foundation - tables, scope, codecs, manifest, backup engine, file copy, home
Tables (spec 4), permissions, scope resolver and table roles, canonical JSONL
and CSV codecs, per-part SHA-256 and rowsHash, manifest written last, the backup
engine with referenced-file copy into the deduplicated store, a narrow storage
interface with an in-memory implementation, Run backup now (streamed ETL), and the
Backups app home. Stand-ins for unreleased core hooks are marked in the code.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 16:14:32 -05:00

54 lines
2.0 KiB
Java

/*
* Copyright 2026 Kingsrook, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.kingsrook.qbits.backups.codec;
import java.util.List;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.data.QRecord;
/*******************************************************************************
** Encodes a record to one line of text, and decodes it back.
*******************************************************************************/
public interface RowCodec
{
/***************************************************************************
** The field names written, in order.
***************************************************************************/
List<String> getFieldNames();
/***************************************************************************
** A header line to write at the start of each part, or null.
***************************************************************************/
String header();
/***************************************************************************
** One line, without the trailing newline.
***************************************************************************/
String encode(QRecord record);
/***************************************************************************
** Read one line back into a record.
***************************************************************************/
QRecord decode(String line) throws QException;
}