working java,python, js then added rust, then rewired java to j
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
Copyright (c) 2011-2022 Reliancy LLC
|
||||
|
||||
Licensed under the GNU LESSER GENERAL PUBLIC LICENSE Version 3.
|
||||
You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html.
|
||||
You may not use this file except in compliance with the License.
|
||||
*/
|
||||
package com.reliancy.dbo.meta;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import com.reliancy.dbo.DBO;
|
||||
import com.reliancy.dbo.Entity;
|
||||
import com.reliancy.dbo.Field;
|
||||
|
||||
/**
|
||||
* Metadata definition for a database field/column.
|
||||
*
|
||||
* <p>FieldDefinition extends DBO to store metadata about fields within entities,
|
||||
* including database column information, constraints, and versioning.
|
||||
*
|
||||
* <h2>Usage:</h2>
|
||||
* <pre>{@code
|
||||
* MetaTerminal meta = (MetaTerminal) terminal;
|
||||
*
|
||||
* // Load field definitions for an entity
|
||||
* List<FieldDefinition> fields = meta.load_fields("PersonDBO");
|
||||
*
|
||||
* // Create new field definition
|
||||
* FieldDefinition fieldDef = new FieldDefinition();
|
||||
* fieldDef.set(FieldDefinition.ENTITY_NAME, "PersonDBO");
|
||||
* fieldDef.set(FieldDefinition.FIELD_NAME, "name");
|
||||
* fieldDef.set(FieldDefinition.COLUMN_NAME, "name");
|
||||
* fieldDef.set(FieldDefinition.COLUMN_TYPE, "VARCHAR");
|
||||
* fieldDef.set(FieldDefinition.TYPE_PARAMS, "255");
|
||||
* fieldDef.set(FieldDefinition.POSITION, 0);
|
||||
* meta.save(fieldDef);
|
||||
* }</pre>
|
||||
*
|
||||
* @see com.reliancy.dbo.meta.MetaTerminal
|
||||
* @see EntityDefinition
|
||||
* @see ChangeEvent
|
||||
*/
|
||||
@Entity.Info(name="bstore.field_definition")
|
||||
public class FieldDefinition extends DBO {
|
||||
// Primary key (composite: entity_name + field_name)
|
||||
public static final Field ID = Field.Str("id").setPk(true); // Format: "EntityName.fieldName"
|
||||
public static final Field ENTITY_NAME = Field.Str("entity_name"); // FK to EntityDefinition
|
||||
public static final Field FIELD_NAME = Field.Str("field_name"); // Java field name
|
||||
|
||||
// Database mapping
|
||||
public static final Field COLUMN_NAME = Field.Str("column_name"); // Database column name (id)
|
||||
public static final Field COLUMN_TYPE = Field.Str("column_type"); // SQL type (VARCHAR, INTEGER, etc.)
|
||||
public static final Field TYPE_PARAMS = Field.Str("type_params"); // e.g., "255" for VARCHAR(255)
|
||||
|
||||
// Position & ordering
|
||||
public static final Field POSITION = Field.Int("position"); // Field position in entity
|
||||
|
||||
// Constraints
|
||||
public static final Field IS_PK = Field.Bool("is_pk");
|
||||
public static final Field IS_AUTO_INCREMENT = Field.Bool("is_auto_increment");
|
||||
public static final Field IS_NULLABLE = Field.Bool("is_nullable");
|
||||
public static final Field IS_UNIQUE = Field.Bool("is_unique");
|
||||
public static final Field IS_INDEXED = Field.Bool("is_indexed");
|
||||
public static final Field DEFAULT_VALUE_JSON = Field.Str("default_value_json"); // JSON representation
|
||||
|
||||
// Versioning & tracking
|
||||
public static final Field ORIGINATOR_ID = Field.Str("originator_id").setTypeParams("128");
|
||||
public static final Field MIGRATION_ID = Field.Str("migration_id").setTypeParams("128");
|
||||
|
||||
// Lifecycle
|
||||
public static final Field CREATED_ON = Field.DateTime("created_on");
|
||||
public static final Field UPDATED_ON = Field.DateTime("updated_on");
|
||||
public static final Field IS_DEPRECATED = Field.Bool("is_deprecated");
|
||||
public static final Field DEPRECATED_ON = Field.DateTime("deprecated_on");
|
||||
public static final Field IS_ACTIVE = Field.Bool("is_active");
|
||||
|
||||
// Additional metadata
|
||||
public static final Field DESCRIPTION = Field.Str("description");
|
||||
|
||||
public FieldDefinition() {
|
||||
super();
|
||||
setStatus(Status.NEW);
|
||||
set(IS_ACTIVE, true);
|
||||
set(IS_DEPRECATED, false);
|
||||
set(IS_PK, false);
|
||||
set(IS_AUTO_INCREMENT, false);
|
||||
set(IS_NULLABLE, true);
|
||||
set(IS_UNIQUE, false);
|
||||
if (get(CREATED_ON) == null) {
|
||||
set(CREATED_ON, new Timestamp(System.currentTimeMillis()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate ID from entity name and field name.
|
||||
*/
|
||||
public static String generateId(String entityName, String fieldName) {
|
||||
return entityName + "." + fieldName;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user