예제 #1
0
        private bool IsBodyInvalid(string[] tsvColumns, DBModelBase dBModelBase)
        {
            if (tsvColumns == null)
            {
                return(false);
            }

            if (tsvColumns.Length != dBModelBase.Columns.Count + dBModelBase.TsvStartCulmnIndex)
            {
                return(false);
            }

            if (this.IsRecortTypeInvarid(tsvColumns[0]))
            {
                return(false);
            }

            if (dBModelBase.Columns
                .Any(
                    c => this.IsLengthInvalid(tsvColumns[c.TSVIndex], c.Length, c.IsLengthCheck) ||
                    this.IsTypeInvalid(tsvColumns[c.TSVIndex], c.ColumnType, c.IsTypeCheck)
                    )
                )
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        private bool TryGetDBModel(string fileName, out DBModelBase dbModelBase)
        {
            dbModelBase = null;
            if (fileName.Length < 7)
            {
                return(false);
            }

            var dbTsvId = fileName.Substring(0, 7);

            return(!_dbs.TryGetValue(dbTsvId, out dbModelBase));
        }
예제 #3
0
        private string BuildSelectSqlString(string[] tsvColumns, DBModelBase dBModelBase)
        {
            var result = new StringBuilder();

            result.Append("SELECT ");
            result.AppendLine(string.Join(',', dBModelBase.Columns.Where(c => c.IsSelectColumn).Select(c => c.ColumnName)));
            result.Append(" FROM ");
            result.AppendLine(dBModelBase.TableName);
            result.Append(" WHERE ");
            result.Append(string.Join(" AND ", dBModelBase.Columns.Where(c => c.IsWhereColumn).Select(c => $"{c.ColumnName} = {tsvColumns[c.TSVIndex]}")));

            return(result.ToString());
        }
예제 #4
0
        private static string BuildEntityTableQry(DBModelBase model, out int defaultItemType)
        {
            var itemId    = model.ID;
            var tablename = "t_" + (string)model.GetValue("name");
            var namefield = (string)model.GetValue("namefield");
            var currDate  = DateTime.Now.ToLongDateString();

            var maxItemType = EntityDBService.GetNextEntityDBId(EntityCode.ItemType);
            var maxLayout   = EntityDBService.GetNextEntityDBId(EntityCode.EntityLayout);
            var maxSchema   = EntityDBService.GetNextEntityDBId(EntityCode.EntitySchema);

            defaultItemType = maxItemType;

            string qry = string.Format(@"CREATE TABLE {0} (
    masterid integer NOT NULL,
    id integer,
    {1} character varying(100)  NOT NULL,
    createdby integer NOT NULL,
    updatedby integer,
    createdon timestamp without time zone NOT NULL,	
    updatedon timestamp without time zone,
    CONSTRAINT {0}_pkey PRIMARY KEY (id));

    INSERT INTO autoid values({2}, 0);

", tablename, namefield, itemId);

            var qItemTyp = string.Format(@"    
    insert into t_entity_itemtype(masterid,id,entityid,name,code) values({0},{2},{1},'Default','0');
    insert into t_entity_viewlayout(masterid,id,entityid,itemtype,states,viewtype,layoutjson)values({0},{3},{1},{2},'','0', null);", model.MasterId, itemId, maxItemType, maxLayout);

            var defaultNameCol = $@"insert into t_entityschema(masterid,id, entityid,fieldname,label,fieldtype,length,isrequired
        ,dbname,tablename,viewtype,defaultvalue
        ,createdon,updatedon)
        values({model.MasterId},{maxSchema},{itemId},'{namefield}','{namefield}',1,100,true
        ,'{namefield.ToLower()}','{tablename}',0,null
        ,'{currDate}','{currDate}');";

            return(qry + qItemTyp + defaultNameCol);
        }
예제 #5
0
        public List <DBModelBase> ReadAll(StackAppContext appContext, List <string> fields, FilterExpression filter)
        {
            var q = new DbQuery(this);

            foreach (var f in fields)
            {
                q.AddField(f, true);
            }
            q.AddField(this.IDField, true);

            q.SetFixedFilter(filter);

            var data   = QueryDbService.ExecuteEntityQuery(appContext, q);
            var models = new List <DBModelBase>();

            foreach (var d in data)
            {
                var m = new DBModelBase(this);
                m.BuiltWithDB(d);
                models.Add(m);
            }

            return(models);
        }
예제 #6
0
 internal static string BuildQuery(DBModelBase model, List <(string, DynamicDbParam)> fls, ref DynamicParameters parameters)
예제 #7
0
        private string BuildSqlString(string[] tsvColumns, DBModelBase dBModelBase)
        {
            // とりあえずSelect のSQL例

            return(this.BuildSelectSqlString(tsvColumns, dBModelBase));
        }