コード例 #1
0
        public EventQueryMapping(StoreOptions storeOptions) : base(typeof(IEvent), storeOptions)
        {
            DatabaseSchemaName = storeOptions.Events.DatabaseSchemaName;

            TenancyStyle = storeOptions.Events.TenancyStyle;

            TableName = new DbObjectName(DatabaseSchemaName, "mt_events");

            duplicateField(x => x.Sequence, "seq_id");
            if (storeOptions.Events.StreamIdentity == StreamIdentity.AsGuid)
            {
                duplicateField(x => x.StreamId, "stream_id");
            }
            else
            {
                duplicateField(x => x.StreamKey, "stream_id");
            }

            duplicateField(x => x.Version, "version");
            duplicateField(x => x.Timestamp, "timestamp");
            duplicateField(x => x.IsArchived, "is_archived");

            if (storeOptions.EventGraph.Metadata.CorrelationId.Enabled)
            {
                duplicateField(x => x.CorrelationId, storeOptions.EventGraph.Metadata.CorrelationId.Name);
            }

            if (storeOptions.EventGraph.Metadata.CausationId.Enabled)
            {
                duplicateField(x => x.CausationId, storeOptions.EventGraph.Metadata.CausationId.Name);
            }
        }
コード例 #2
0
        public void parse_qualified_name_without_schema()
        {
            var name = DbObjectName.Parse(theProvider, "foo");

            name.Schema.ShouldBe(theProvider.DefaultDatabaseSchemaName);
            name.Name.ShouldBe("foo");
        }
コード例 #3
0
        public static void MarkOwnership(this IDocumentSession session, DbObjectName table, int ownerId,
                                         IEnumerable <Envelope> envelopes)
        {
            var operation = new MarkOwnership(table, ownerId, envelopes);

            session.QueueOperation(operation);
        }
コード例 #4
0
 public static Function ForRemoval(DbObjectName identifier)
 {
     return(new Function(identifier, null)
     {
         IsRemoved = true
     });
 }
コード例 #5
0
        public void parse_qualified_name_with_schema()
        {
            var name = DbObjectName.Parse(theProvider, "other.foo");

            name.Schema.ShouldBe("other");
            name.Name.ShouldBe("foo");
        }
コード例 #6
0
ファイル: Table.cs プロジェクト: JasperFx/weasel
 public ColumnExpression ForeignKeyTo(string referencedTableName, string referencedColumnName,
                                      string fkName          = null, CascadeAction onDelete = CascadeAction.NoAction,
                                      CascadeAction onUpdate = CascadeAction.NoAction)
 {
     return(ForeignKeyTo(DbObjectName.Parse(SqlServerProvider.Instance, referencedTableName), referencedColumnName, fkName, onDelete,
                         onUpdate));
 }
            public UniqueIndex(DocumentMapping mapping, MemberInfo[][] members)
            {
                _members = members;

                _locator = members
                           .Select(m =>
                {
                    var sql = mapping.FieldFor(m).SqlLocator.Replace("d.", "");
                    switch (Casing)
                    {
                    case Casings.Upper:
                        return($" upper({sql})");

                    case Casings.Lower:
                        return($" lower({sql})");

                    default:
                        return($" ({sql})");
                    }
                })
                           .Join(",");

                _locator = $" ({_locator})";

                _table = mapping.Table;
            }
コード例 #8
0
        public static DbObjectName ParseIdentifier(string functionSql)
        {
            var signature = ParseSignature(functionSql);
            var open      = signature.IndexOf('(');

            return(DbObjectName.Parse(signature.Substring(0, open)));
        }
コード例 #9
0
        public static void DeleteEnvelopes(this IDocumentSession session, DbObjectName table,
                                           IEnumerable <Envelope> envelopes)
        {
            var operation = new DeleteEnvelopes(table, envelopes);

            session.QueueOperation(operation);
        }
コード例 #10
0
        public void to_temp_copy_table_appends__temp()
        {
            var name     = new DbObjectName("foo");
            var tempCopy = name.ToTempCopyTable();

            tempCopy.QualifiedName.ShouldBe("public.foo_temp");
        }
コード例 #11
0
        public static void DeleteEnvelope(this IDocumentSession session, DbObjectName table,
                                          Envelope envelope)
        {
            var operation = new DeleteEnvelope(table, envelope);

            session.QueueOperation(operation);
        }
コード例 #12
0
        public void ShouldCompareEqualityByValue()
        {
            DbObjectName name1 = "Customer";
            DbObjectName name2 = "Customer";

            Assert.AreEqual(name1, name2);
        }
コード例 #13
0
        public void parse_qualified_name_without_schema()
        {
            var name = DbObjectName.Parse("foo");

            name.Schema.ShouldBe("public");
            name.Name.ShouldBe("foo");
        }
コード例 #14
0
        public UpsertFunction(DocumentMapping mapping, DbObjectName identifier = null, bool disableConcurrency = false) : base(identifier ?? mapping.UpsertFunction)
        {
            _disableConcurrency = disableConcurrency;
            if (mapping == null)
            {
                throw new ArgumentNullException(nameof(mapping));
            }

            _tableName = mapping.Table;


            var table = new DocumentTable(mapping);

            if (table.PrimaryKeys.Count > 1)
            {
                _primaryKeyConstraintName = mapping.Table.Name + "_pkey";
            }
            else
            {
                _primaryKeyConstraintName = "pk_" + mapping.Table.Name;
            }



            var idType   = mapping.IdMember.GetMemberType();
            var pgIdType = TypeMappings.GetPgType(idType);

            Arguments.Add(new UpsertArgument
            {
                Arg          = "docId",
                PostgresType = pgIdType,
                Column       = "id",
                Members      = new[] { mapping.IdMember }
            });

            Arguments.Add(new DocJsonBodyArgument());

            Arguments.AddRange(mapping.DuplicatedFields.Select(x => x.UpsertArgument));

            Arguments.Add(new VersionArgument());

            Arguments.Add(new DotNetTypeArgument());

            if (mapping.IsHierarchy())
            {
                Arguments.Add(new DocTypeArgument());
            }

            if (mapping.UseOptimisticConcurrency)
            {
                Arguments.Add(new CurrentVersionArgument());
            }

            if (mapping.TenancyStyle == TenancyStyle.Conjoined)
            {
                Arguments.Add(new TenantIdArgument());
                _tenantWhereClause    = $"{_tableName.QualifiedName}.{TenantIdColumn.Name} = {TenantIdArgument.ArgName}";
                _andTenantWhereClause = $" and {_tenantWhereClause}";
            }
        }
コード例 #15
0
        ///<inheritdoc/>
        public virtual TableDefinition GetTableDefinition()
        {
            this.LoadDbAdapter();
            TableDefinition definition = DbSchema.Tables
                                         .Where(c => DbObjectName.Equals(c.Name, StringComparison.OrdinalIgnoreCase))
                                         .Select(c => new TableDefinition
            {
                Name          = c.Name,
                ConnectorId   = Connector.Id,
                ConnectorName = Connector.Name,
                SchemaName    = c.Schema,
                DbName        = Connector.InitialCatalog,
                Columns       = c.Columns.Select(d => new ColumnDefinition
                {
                    Name                 = d.ColumnName,
                    Type                 = d.ColumnType,
                    Length               = d.ColumnLength,
                    IsComputed           = d.IsComputed,
                    IsNullable           = d.ColumnIsNullable,
                    IsPrimaryKey         = d.IsPK,
                    IsForigenKey         = d.IsFK,
                    ReferencedTable      = d.ReferencedTable,
                    ReferencedColumn     = d.ReferencedColumn,
                    ReferencedSchema     = d.ReferencedSchema,
                    ReferencedDatabase   = d.ReferencedDatabase,
                    IsPrimaryKeyIdentity = d.PKIsIdentity
                })
            })
                                         .FirstOrDefault();


            definition.NavigationProperties = ListNavigationProperties();
            return(definition);
        }
コード例 #16
0
ファイル: AppObjects.cs プロジェクト: janproch/datadmin
 public override string ToString()
 {
     if (DbObjectName != null)
     {
         return(DbObjectName.ToString());
     }
     return(base.ToString());
 }
コード例 #17
0
        public void CallsSproc_extension_method()
        {
            var command = new SqlCommand();

            command.CallsSproc(DbObjectName.Parse(SqlServerProvider.Instance, "foo.func")).ShouldBeSameAs(command);
            command.CommandType.ShouldBe(CommandType.StoredProcedure);
            command.CommandText.ShouldBe("foo.func");
        }
コード例 #18
0
        public void can_parse_without_schema()
        {
            var table = DbObjectName.Parse("mt_doc_user");

            table.Name.ShouldBe("mt_doc_user");
            table.Schema.ShouldBe("public");
            table.QualifiedName.ShouldBe("public.mt_doc_user");
        }
コード例 #19
0
        public SprocCall Sproc(DbObjectName function, ICallback callback = null)
        {
            if (function == null)
            {
                throw new ArgumentNullException(nameof(function));
            }

            return(Current().Sproc(function, callback));
        }
コード例 #20
0
        public void ShouldReturnOnlyObjectName()
        {
            string       strName = "Customer";
            DbObjectName name    = strName;

            Assert.AreEqual("", name.Schema);
            Assert.AreEqual("Customer", name.ShortName);
            Assert.AreEqual("Customer", name.ToString());
        }
コード例 #21
0
ファイル: EnvelopeTables.cs プロジェクト: tmpreston/jasper
        public EnvelopeTables(MessagingSettings settings, StoreOptions storeConfiguration)
        {
            Incoming = new DbObjectName(storeConfiguration.DatabaseSchemaName,
                                        PostgresqlEnvelopeStorage.IncomingTableName);
            Outgoing = new DbObjectName(storeConfiguration.DatabaseSchemaName,
                                        PostgresqlEnvelopeStorage.OutgoingTableName);

            CurrentNodeId = settings.UniqueNodeId;
        }
コード例 #22
0
        public void ShouldReturnSchemaAndObjectNameEvenForFullyQualifiedNames()
        {
            string       strName = "localhost.Northwind.dbo.Customer";
            DbObjectName name    = strName;

            Assert.AreEqual("dbo", name.Schema);
            Assert.AreEqual("Customer", name.ShortName);
            Assert.AreEqual("localhost.Northwind.dbo.Customer", name.ToString());
        }
コード例 #23
0
        public SystemFunction(string schema, string functionName, string args, bool isRemoved = false)
            : base(new DbObjectName(schema, functionName), isRemoved)
        {
            _args     = args;
            _function = new DbObjectName(schema, functionName);
            _dropSql  = $"drop function if exists {schema}.{functionName}({args}) cascade;";

            Name = functionName;
        }
コード例 #24
0
        public void should_stick_the_patch_doc_function_in_the_right_schema()
        {
            StoreOptions(_ => _.DatabaseSchemaName = "other");

            theStore.Schema.ApplyAllConfiguredChangesToDatabase();

            var expected = new DbObjectName("other", "mt_transform_patch_doc");

            theStore.Tenancy.Default.DbObjects.Functions().Contains(expected).ShouldBeTrue();
        }
コード例 #25
0
        public static void ShouldContain(this DbObjectName[] names, string qualifiedName)
        {
            if (names == null)
            {
                throw new ArgumentNullException(nameof(names));
            }

            var function = DbObjectName.Parse(qualifiedName);

            names.ShouldContain(function);
        }
コード例 #26
0
        public virtual void Execute(IDatabase db, IScriptFile xmlFile)
        {
            Throw.If(db, "db").IsNull();
            Throw.If(xmlFile, "xmlFile").IsNull();
            Throw.If(!xmlFile.IsXml, "xmlFile");

            DbObjectName tableName = GetTableNameFromXmlElement(xmlFile);
            ITable       table     = MyMetaUtil.GetTableOrThrow(db, tableName);

            LoadTable(table, xmlFile.Path);
        }
コード例 #27
0
ファイル: ForeignKey.cs プロジェクト: JasperFx/weasel
        public void Parse(string definition)
        {
            var open1   = definition.IndexOf('(');
            var closed1 = definition.IndexOf(')');

            ColumnNames = definition.Substring(open1 + 1, closed1 - open1 - 1).ToDelimitedArray(',');

            var open2   = definition.IndexOf('(', closed1);
            var closed2 = definition.IndexOf(')', open2);

            LinkedNames = definition.Substring(open2 + 1, closed2 - open2 - 1).ToDelimitedArray(',');


            var references = "REFERENCES";
            var tableStart = definition.IndexOf(references) + references.Length;

            var tableName = definition.Substring(tableStart, open2 - tableStart).Trim();

            LinkedTable = DbObjectName.Parse(PostgresqlProvider.Instance, tableName);

            if (definition.ContainsIgnoreCase("ON DELETE CASCADE"))
            {
                OnDelete = CascadeAction.Cascade;
            }
            else if (definition.ContainsIgnoreCase("ON DELETE RESTRICT"))
            {
                OnDelete = CascadeAction.Restrict;
            }
            else if (definition.ContainsIgnoreCase("ON DELETE SET NULL"))
            {
                OnDelete = CascadeAction.SetNull;
            }
            else if (definition.ContainsIgnoreCase("ON DELETE SET DEFAULT"))
            {
                OnDelete = CascadeAction.SetDefault;
            }

            if (definition.ContainsIgnoreCase("ON UPDATE CASCADE"))
            {
                OnUpdate = CascadeAction.Cascade;
            }
            else if (definition.ContainsIgnoreCase("ON UPDATE RESTRICT"))
            {
                OnUpdate = CascadeAction.Restrict;
            }
            else if (definition.ContainsIgnoreCase("ON UPDATE SET NULL"))
            {
                OnUpdate = CascadeAction.SetNull;
            }
            else if (definition.ContainsIgnoreCase("ON UPDATE SET DEFAULT"))
            {
                OnUpdate = CascadeAction.SetDefault;
            }
        }
コード例 #28
0
        public static async Task <bool> FunctionExists(this SqlConnection conn, DbObjectName functionIdentifier)
        {
            var sql =
                "SELECT specific_schema, routine_name FROM information_schema.routines WHERE type_udt_name != 'trigger' and routine_name like :name and specific_schema = :schema;";

            using var reader = await conn.CreateCommand(sql)
                               .With("name", functionIdentifier.Name)
                               .With("schema", functionIdentifier.Schema)
                               .ExecuteReaderAsync();

            return(await reader.ReadAsync());
        }
コード例 #29
0
ファイル: EventQueryMapping.cs プロジェクト: jmbledsoe/marten
        public EventQueryMapping(StoreOptions storeOptions) : base(typeof(IEvent), storeOptions)
        {
            Selector           = new EventSelector(storeOptions.Events, storeOptions.Serializer());
            DatabaseSchemaName = storeOptions.Events.DatabaseSchemaName;

            Table = new DbObjectName(DatabaseSchemaName, "mt_events");

            duplicateField(x => x.Sequence, "seq_id");
            duplicateField(x => x.StreamId, "stream_id");
            duplicateField(x => x.Version, "version");
            duplicateField(x => x.Timestamp, "timestamp");
        }
コード例 #30
0
        public SprocCall Sproc(DbObjectName function, ICallback callback = null)
        {
            if (function == null)
            {
                throw new ArgumentNullException(nameof(function));
            }

            var call = new SprocCall(this, function);

            AddCall(call, callback);

            return(call);
        }