Skip to content

Rework schema and metadata #764

@Zruty0

Description

@Zruty0

We wanted to change the following about the schema:

  • Formally make it a collection of 'columns'.
  • Turn metadata into an instance of IRow.
  • (maybe) introduce 'global metadata' in addition to 'column metadata'.
    Below is the sketch of the new interface for schema:
    public interface ISchema : IReadOnlyList<ISchemaColumn>
    {
        /// <summary>
        /// Dataset-wide metadata.
        /// </summary>
        IRow Metadata { get; }
    }

    public interface ISchemaColumn
    {
        /// <summary>
        /// The name of a column. This string should always be non-empty.
        /// </summary>
        string Name { get; }

        /// <summary>
        /// The type of the column.
        /// </summary>
        ColumnType Type { get; }

        /// <summary>
        /// The metadata for a column, or <c>null</c> if this column has no metadata.
        /// </summary>
        IRow Metadata { get; }
    }

In addition, we might want to rework IRow to not include the notion of 'Row ID' and 'active columns'. Maybe this calls for another interface, like IMovingRow that would include these.

/cc @TomFinley

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions