package net.sourceforge.mayfly.evaluation.command; import net.sourceforge.mayfly.datastore.Column; import net.sourceforge.mayfly.datastore.DataStore; import net.sourceforge.mayfly.datastore.Position; import net.sourceforge.mayfly.datastore.Schema; import net.sourceforge.mayfly.datastore.TableReference; public class AddColumn extends Command { private final UnresolvedTableReference table; private final Column newColumn; private final Position position; public AddColumn(UnresolvedTableReference table, Column newColumn, Position position) { this.newColumn = newColumn; this.table = table; this.position = position; } @Override public UpdateStore update(DataStore store, String defaultSchema) { TableReference reference = table.resolve(store, defaultSchema, null); Schema existing = store.schema(reference.schema()); Schema updatedSchema = existing.addColumn(reference.tableName(), newColumn, position); return new UpdateStore(store.replace(reference.schema(), updatedSchema), 0); } }