protected override void Visit(VisitPath path, NotionPropertyConfiguration obj)
    {
        if (!path.Previous.HasValue)
        {
            return;
        }

        var optionalDatabaseObject = path.FindPrevious <DatabaseObject>();

        if (!optionalDatabaseObject.HasValue)
        {
            _logger.LogWarning(
                "Unexpected path for property configuration. Did not find database that contains the property following path: {Path}",
                path.ToString());
            return;
        }

        if (!obj.Container.HasValue)
        {
            obj.Container = optionalDatabaseObject.Value;
        }

        if (obj is RelationPropertyConfiguration relationPropertyConfiguration)
        {
            _notionCache.RegisterPropertyConfiguration(
                relationPropertyConfiguration.Configuration.DatabaseId,
                obj,
                relationPropertyConfiguration.Configuration.SyncedPropertyId);
        }

        _notionCache.RegisterPropertyConfiguration(optionalDatabaseObject.Value.Id, obj);
    }
示例#2
0
    protected override void Visit(VisitPath path, NotionPropertyValue propertyValue)
    {
        propertyValue.Configuration = Option.None;
        if (!path.Previous.HasValue || !propertyValue.Id.HasValue)
        {
            return;
        }

        var optionalPageObject = path.FindPrevious <PageObject>();

        if (!optionalPageObject.HasValue)
        {
            _logger.LogWarning(
                "Parent for property value with id: {PropertyId} is not a page, this is not expected. Path: {Path}",
                propertyValue.Id.Value, path.ToString());
            return;
        }

        var pageObject = optionalPageObject.Value;

        propertyValue.Container = pageObject;

        if (!pageObject.Container.HasValue)
        {
            _logger.LogWarning("Container for page: {PageId} is not set", pageObject.Id);
            return;
        }

        if (!(pageObject.Container.Value is DatabaseObject parentDatabase))
        {
            _logger.LogWarning(
                "Container for page: {PageId} is not a database, yet it has properties. This is not expected",
                pageObject.Id);
            return;
        }

        var propertyConfigurationId = propertyValue.Id.Value;
        var propertyConfiguration   = _notionCache.GetPropertyConfiguration(parentDatabase.Id, propertyConfigurationId);

        if (!propertyConfiguration.HasValue)
        {
            _logger.LogTrace(
                "Could not find property configuration for id: {PropertyConfigurationId}, in database: {DatabaseId} for page: {PageId}",
                propertyConfigurationId, parentDatabase.Id, pageObject.Id);
            return;
        }

        propertyValue.Configuration = propertyConfiguration.Value;
    }