Add support for Dublin Core

This commit is contained in:
Joakim Hellsén 2024-02-18 01:05:30 +01:00
commit 8f7690d8f4
9 changed files with 800 additions and 173 deletions

84
dublincore.go Normal file
View file

@ -0,0 +1,84 @@
package main
import (
"context"
"log"
"time"
"github.com/TheLovinator1/FeedVault/db"
"github.com/jackc/pgx/v5/pgtype"
"github.com/mmcdole/gofeed"
)
func createFeedDublinCore(ctx context.Context, feed *gofeed.Feed, newFeed db.Feed) {
// TODO: Check if this is correct and works. I can't find a feed that has Dublin Core to test with :-)
if feed.DublinCoreExt == nil {
log.Printf("No Dublin Core to add to database")
return
}
// Add Dublin Core to the database
_, err := DB.CreateFeedDublinCore(ctx, db.CreateFeedDublinCoreParams{
CreatedAt: pgtype.Timestamptz{Time: time.Now(), Valid: true},
UpdatedAt: pgtype.Timestamptz{Time: time.Now(), Valid: true},
DeletedAt: pgtype.Timestamptz{Valid: false},
Title: feed.DublinCoreExt.Title,
Creator: feed.DublinCoreExt.Creator,
Subject: feed.DublinCoreExt.Subject,
Source: feed.DublinCoreExt.Source,
Publisher: feed.DublinCoreExt.Publisher,
Contributor: feed.DublinCoreExt.Contributor,
Description: feed.DublinCoreExt.Description,
Date: feed.DublinCoreExt.Date,
Type: feed.DublinCoreExt.Type,
Format: feed.DublinCoreExt.Format,
Identifier: feed.DublinCoreExt.Identifier,
Language: feed.DublinCoreExt.Language,
Relation: feed.DublinCoreExt.Relation,
Coverage: feed.DublinCoreExt.Coverage,
Rights: feed.DublinCoreExt.Rights,
FeedID: newFeed.ID,
})
if err != nil {
log.Printf("Error adding Dublin Core to database: %s", err)
return
}
log.Printf("Dublin Core added to database")
}
func createItemDublinCore(ctx context.Context, item *gofeed.Item, newItem db.Item) {
if item.DublinCoreExt == nil {
log.Printf("No Dublin Core to add to database")
return
}
// Add Dublin Core to the database
_, err := DB.CreateItemDublinCore(ctx, db.CreateItemDublinCoreParams{
CreatedAt: pgtype.Timestamptz{Time: time.Now(), Valid: true},
UpdatedAt: pgtype.Timestamptz{Time: time.Now(), Valid: true},
DeletedAt: pgtype.Timestamptz{Valid: false},
Title: item.DublinCoreExt.Title,
Creator: item.DublinCoreExt.Creator,
Subject: item.DublinCoreExt.Subject,
Source: item.DublinCoreExt.Source,
Publisher: item.DublinCoreExt.Publisher,
Contributor: item.DublinCoreExt.Contributor,
Description: item.DublinCoreExt.Description,
Date: item.DublinCoreExt.Date,
Type: item.DublinCoreExt.Type,
Format: item.DublinCoreExt.Format,
Identifier: item.DublinCoreExt.Identifier,
Language: item.DublinCoreExt.Language,
Relation: item.DublinCoreExt.Relation,
Coverage: item.DublinCoreExt.Coverage,
Rights: item.DublinCoreExt.Rights,
ItemID: newItem.ID,
})
if err != nil {
log.Printf("Error adding Dublin Core to database: %s", err)
return
}
log.Printf("Dublin Core added to database")
}