confighantering. connection t postgres. test av import
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -4,3 +4,4 @@ Server/.vs
 | 
				
			|||||||
Server/bin
 | 
					Server/bin
 | 
				
			||||||
Server/obj
 | 
					Server/obj
 | 
				
			||||||
Server/Bibblan.csproj.user
 | 
					Server/Bibblan.csproj.user
 | 
				
			||||||
 | 
					Server/appsettings.user.json
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1,8 @@
 | 
				
			|||||||
@import "../../node_modules/bootstrap/scss/bootstrap.scss";
 | 
					@import "../../node_modules/bootstrap/scss/bootstrap.scss";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.book-card {
 | 
				
			||||||
 | 
						.card-img-top {
 | 
				
			||||||
 | 
							padding: 1rem;
 | 
				
			||||||
 | 
							aspect-ratio: 3 / 4;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,15 @@
 | 
				
			|||||||
    </PackageReference>
 | 
					    </PackageReference>
 | 
				
			||||||
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
 | 
					    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.8" />
 | 
				
			||||||
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8" />
 | 
					    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Content Update="appsettings.user.json">
 | 
				
			||||||
 | 
					      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
				
			||||||
 | 
					      <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
 | 
				
			||||||
 | 
					      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
 | 
				
			||||||
 | 
					    </Content>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,12 +3,12 @@ using Bibblan.ViewModels;
 | 
				
			|||||||
using Microsoft.Extensions.Options;
 | 
					using Microsoft.Extensions.Options;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Bibblan.Business.Services
 | 
					namespace Bibblan.Business.Services
 | 
				
			||||||
{
 | 
					{         
 | 
				
			||||||
    public class CalibreService
 | 
					    public class CalibreService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private readonly BibblanOptions _options;
 | 
					        private readonly BibblanOptions _options;
 | 
				
			||||||
        CalibreContext _context;
 | 
					        SqliteCalibreContext _context;
 | 
				
			||||||
        public CalibreService(CalibreContext context, IOptions<BibblanOptions> options)
 | 
					        public CalibreService(SqliteCalibreContext context, IOptions<BibblanOptions> options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _options = options.Value;
 | 
					            _options = options.Value;
 | 
				
			||||||
            _context = context;
 | 
					            _context = context;
 | 
				
			||||||
@@ -43,7 +43,7 @@ namespace Bibblan.Business.Services
 | 
				
			|||||||
                       Comments = comment.Text,
 | 
					                       Comments = comment.Text,
 | 
				
			||||||
                       Language = l.LangCode,
 | 
					                       Language = l.LangCode,
 | 
				
			||||||
                       Path = b.Path,
 | 
					                       Path = b.Path,
 | 
				
			||||||
                       HasCover = b.HasCover == "1",
 | 
					                       HasCover = b.HasCover,// == "1",
 | 
				
			||||||
                       Formats = (from d in _context.Data where d.Book == b.Id orderby d.Format select new DataVm { Id = d.Id, Format = d.Format, FileName = d.Name + "." + d.Format.ToLower() }).ToList(),
 | 
					                       Formats = (from d in _context.Data where d.Book == b.Id orderby d.Format select new DataVm { Id = d.Id, Format = d.Format, FileName = d.Name + "." + d.Format.ToLower() }).ToList(),
 | 
				
			||||||
                       SeriesName = s.Name,
 | 
					                       SeriesName = s.Name,
 | 
				
			||||||
                       SeriesNumber = b.SeriesIndex
 | 
					                       SeriesNumber = b.SeriesIndex
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,8 @@
 | 
				
			|||||||
using Bibblan.Business.Services;
 | 
					using Bibblan.Business.Services;
 | 
				
			||||||
using Bibblan.Models;
 | 
					using Bibblan.Models;
 | 
				
			||||||
using Microsoft.AspNetCore.Mvc;
 | 
					using Microsoft.AspNetCore.Mvc;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore.Storage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Bibblan.Controllers
 | 
					namespace Bibblan.Controllers
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -9,8 +11,13 @@ namespace Bibblan.Controllers
 | 
				
			|||||||
    public class CalibreController : ControllerBase
 | 
					    public class CalibreController : ControllerBase
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        CalibreService _service;
 | 
					        CalibreService _service;
 | 
				
			||||||
        public CalibreController(CalibreService service) {
 | 
					        PostgresCalibreContext _postgresContext;
 | 
				
			||||||
 | 
					        SqliteCalibreContext _sqliteContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public CalibreController(CalibreService service, SqliteCalibreContext sqliteContext, PostgresCalibreContext postgresContext) {
 | 
				
			||||||
            _service = service;
 | 
					            _service = service;
 | 
				
			||||||
 | 
					            _postgresContext = postgresContext;
 | 
				
			||||||
 | 
					            _sqliteContext = sqliteContext;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [HttpGet("books")]
 | 
					        [HttpGet("books")]
 | 
				
			||||||
@@ -27,5 +34,278 @@ namespace Bibblan.Controllers
 | 
				
			|||||||
            return File(bytes, "image/jpeg", true);
 | 
					            return File(bytes, "image/jpeg", true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [HttpGet("dump")]
 | 
				
			||||||
 | 
					        public IActionResult Dump()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //var e = _postgresContext.Database.EnsureCreated();
 | 
				
			||||||
 | 
					            //var script = _postgresContext.Database.GenerateCreateScript();
 | 
				
			||||||
 | 
					            // _postgresContext.Database.ExecuteSqlRaw(script);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var books = 1;// DumpBooks(); 
 | 
				
			||||||
 | 
					            var auhtors = 1;// DumpAuthors();
 | 
				
			||||||
 | 
					            var comments = 1;// DumpComments();
 | 
				
			||||||
 | 
					            var data = 1;// DumpData();
 | 
				
			||||||
 | 
					            var identifiers = 1;// DumpIdentifiers();
 | 
				
			||||||
 | 
					            var languages = 1;// DumpLanguages();
 | 
				
			||||||
 | 
					            var publishers = 1;// DumpPublishers();
 | 
				
			||||||
 | 
					            var ratings = 1;// DumpRatings();
 | 
				
			||||||
 | 
					            var series = 1;// DumpSeries();
 | 
				
			||||||
 | 
					            var tags = 1;// DumpTags();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var ba = 1;// Dumpa(_postgresContext, _sqliteContext.BooksAuthorsLink.OrderBy(x => x.Id), _postgresContext.BooksAuthorsLink);
 | 
				
			||||||
 | 
					            var bl = 1;// Dumpa(_postgresContext, _sqliteContext.BooksLanguagesLink.OrderBy(x => x.Id), _postgresContext.BooksLanguagesLink);
 | 
				
			||||||
 | 
					            var bp = 1;// Dumpa(_postgresContext, _sqliteContext.BooksPublishersLink.OrderBy(x => x.Id), _postgresContext.BooksPublishersLink);
 | 
				
			||||||
 | 
					            var br = 1;// Dumpa(_postgresContext, _sqliteContext.BooksRatingsLink.OrderBy(x => x.Id), _postgresContext.BooksRatingsLink);
 | 
				
			||||||
 | 
					            var bs = 1;// Dumpa(_postgresContext, _sqliteContext.BooksSeriesLink.OrderBy(x => x.Id), _postgresContext.BooksSeriesLink);
 | 
				
			||||||
 | 
					            var bt = 1;// Dumpa(_postgresContext, _sqliteContext.BooksTagsLink.OrderBy(x => x.Id), _postgresContext.BooksTagsLink);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return Ok(new
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                books,
 | 
				
			||||||
 | 
					                auhtors,
 | 
				
			||||||
 | 
					                comments,
 | 
				
			||||||
 | 
					                data,
 | 
				
			||||||
 | 
					                identifiers,
 | 
				
			||||||
 | 
					                languages,
 | 
				
			||||||
 | 
					                publishers,
 | 
				
			||||||
 | 
					                ratings,
 | 
				
			||||||
 | 
					                series,
 | 
				
			||||||
 | 
					                tags,
 | 
				
			||||||
 | 
					                links = new
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    ba,
 | 
				
			||||||
 | 
					                    bl,
 | 
				
			||||||
 | 
					                    bp,
 | 
				
			||||||
 | 
					                    br,
 | 
				
			||||||
 | 
					                    bs,
 | 
				
			||||||
 | 
					                    bt
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int Dumpa<T>(DbContext toContext, IQueryable<T> from, DbSet<T> to)
 | 
				
			||||||
 | 
					            where T : class
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var records = from.Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = records.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var record in records)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    to.Add(record);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                toContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpBooks() {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var books = _sqliteContext.Books.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = books.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var book in books)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Books.Add(book);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpAuthors()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var authors = _sqliteContext.Authors.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = authors.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var author in authors)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Authors.Add(author);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpComments()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var comments = _sqliteContext.Comments.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = comments.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var comment in comments)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Comments.Add(comment);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var data = _sqliteContext.Data.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = data.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var d in data)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Data.Add(d);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpIdentifiers()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var identifiers = _sqliteContext.Identifiers.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = identifiers.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var id in identifiers)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Identifiers.Add(id);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpLanguages()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var languages = _sqliteContext.Languages.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = languages.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var lang in languages)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Languages.Add(lang);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpPublishers()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var publishers = _sqliteContext.Publishers.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = publishers.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var pub in publishers)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if(pub.Sort == null)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        pub.Sort = pub.Name;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    _postgresContext.Publishers.Add(pub);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpRatings()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var ratings = _sqliteContext.Ratings.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = ratings.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var rating in ratings)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Ratings.Add(rating);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpSeries()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var series = _sqliteContext.Series.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = series.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var ser in series)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Series.Add(ser);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private int DumpTags()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var current = 0;
 | 
				
			||||||
 | 
					            int step = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var done = false;
 | 
				
			||||||
 | 
					            while (!done)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var tags = _sqliteContext.Tags.OrderBy(b => b.Id).Skip(current).Take(step);
 | 
				
			||||||
 | 
					                done = tags.Count() == 0;
 | 
				
			||||||
 | 
					                foreach (var tag in tags)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _postgresContext.Tags.Add(tag);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _postgresContext.SaveChanges();
 | 
				
			||||||
 | 
					                current += step;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return current;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,5 +6,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public string CalibreDb { get; set; } = String.Empty;
 | 
					        public string CalibreDb { get; set; } = String.Empty;
 | 
				
			||||||
        public string CalibreRoot { get; set; } = String.Empty;
 | 
					        public string CalibreRoot { get; set; } = String.Empty;
 | 
				
			||||||
 | 
					        public string BibblanConnection { get; set; } = String.Empty;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,8 @@ namespace Bibblan.Models
 | 
				
			|||||||
        public long Id { get; set; }
 | 
					        public long Id { get; set; }
 | 
				
			||||||
        public string Title { get; set; }
 | 
					        public string Title { get; set; }
 | 
				
			||||||
        public string Sort { get; set; }
 | 
					        public string Sort { get; set; }
 | 
				
			||||||
        public string Timestamp { get; set; }
 | 
					        public DateTime Timestamp { get; set; }
 | 
				
			||||||
        public string Pubdate { get; set; }
 | 
					        public DateTime Pubdate { get; set; }
 | 
				
			||||||
        public double SeriesIndex { get; set; }
 | 
					        public double SeriesIndex { get; set; }
 | 
				
			||||||
        public string AuthorSort { get; set; }
 | 
					        public string AuthorSort { get; set; }
 | 
				
			||||||
        public string Isbn { get; set; }
 | 
					        public string Isbn { get; set; }
 | 
				
			||||||
@@ -24,8 +24,8 @@ namespace Bibblan.Models
 | 
				
			|||||||
        public string Path { get; set; }
 | 
					        public string Path { get; set; }
 | 
				
			||||||
        public long Flags { get; set; }
 | 
					        public long Flags { get; set; }
 | 
				
			||||||
        public string Uuid { get; set; }
 | 
					        public string Uuid { get; set; }
 | 
				
			||||||
        public string HasCover { get; set; }
 | 
					        public bool HasCover { get; set; }
 | 
				
			||||||
        public string LastModified { get; set; }
 | 
					        public DateTime LastModified { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public partial class BooksAuthorsLink
 | 
					    public partial class BooksAuthorsLink
 | 
				
			||||||
@@ -101,11 +101,11 @@ namespace Bibblan.Models
 | 
				
			|||||||
        public string Label { get; set; }
 | 
					        public string Label { get; set; }
 | 
				
			||||||
        public string Name { get; set; }
 | 
					        public string Name { get; set; }
 | 
				
			||||||
        public string Datatype { get; set; }
 | 
					        public string Datatype { get; set; }
 | 
				
			||||||
        public string MarkForDelete { get; set; }
 | 
					        public bool MarkForDelete { get; set; }
 | 
				
			||||||
        public string Editable { get; set; }
 | 
					        public bool Editable { get; set; }
 | 
				
			||||||
        public string Display { get; set; }
 | 
					        public string Display { get; set; }
 | 
				
			||||||
        public string IsMultiple { get; set; }
 | 
					        public bool IsMultiple { get; set; }
 | 
				
			||||||
        public string Normalized { get; set; }
 | 
					        public bool Normalized { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public partial class Data
 | 
					    public partial class Data
 | 
				
			||||||
@@ -161,7 +161,7 @@ namespace Bibblan.Models
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        public long Id { get; set; }
 | 
					        public long Id { get; set; }
 | 
				
			||||||
        public string Name { get; set; }
 | 
					        public string Name { get; set; }
 | 
				
			||||||
        public string Sort { get; set; }
 | 
					        public string? Sort { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public partial class Ratings
 | 
					    public partial class Ratings
 | 
				
			||||||
@@ -183,7 +183,7 @@ namespace Bibblan.Models
 | 
				
			|||||||
        public string Name { get; set; }
 | 
					        public string Name { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public partial class CalibreContext : DbContext
 | 
					    public partial class BaseContext : DbContext
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public virtual DbSet<Authors> Authors { get; set; }
 | 
					        public virtual DbSet<Authors> Authors { get; set; }
 | 
				
			||||||
        public virtual DbSet<Books> Books { get; set; }
 | 
					        public virtual DbSet<Books> Books { get; set; }
 | 
				
			||||||
@@ -209,7 +209,7 @@ namespace Bibblan.Models
 | 
				
			|||||||
        public virtual DbSet<Series> Series { get; set; }
 | 
					        public virtual DbSet<Series> Series { get; set; }
 | 
				
			||||||
        public virtual DbSet<Tags> Tags { get; set; }
 | 
					        public virtual DbSet<Tags> Tags { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public CalibreContext(DbContextOptions<CalibreContext> options) : base(options)
 | 
					        public BaseContext(DbContextOptions options) : base(options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -762,4 +762,20 @@ namespace Bibblan.Models
 | 
				
			|||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public partial class SqliteCalibreContext : BaseContext
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public SqliteCalibreContext(DbContextOptions<SqliteCalibreContext> options) : base(options)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public partial class PostgresCalibreContext : BaseContext
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public PostgresCalibreContext(DbContextOptions<PostgresCalibreContext> options) : base(options)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,12 +1,16 @@
 | 
				
			|||||||
using Bibblan.Business.Services;
 | 
					using Bibblan.Business.Services;
 | 
				
			||||||
using Bibblan.Models;
 | 
					using Bibblan.Models;
 | 
				
			||||||
using Microsoft.EntityFrameworkCore;
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
 | 
					using Microsoft.Extensions.Options;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var builder = WebApplication.CreateBuilder(args);
 | 
					var builder = WebApplication.CreateBuilder(args);
 | 
				
			||||||
 | 
					builder.Configuration.AddJsonFile($"appsettings.user.json", true, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var configSection = builder.Configuration.GetSection(BibblanOptions.Bibblan);
 | 
				
			||||||
 | 
					BibblanOptions config = new();
 | 
				
			||||||
 | 
					configSection.Bind(config);
 | 
				
			||||||
// Add services to the container.
 | 
					// Add services to the container.
 | 
				
			||||||
builder.Services.Configure<BibblanOptions>(
 | 
					builder.Services.Configure<BibblanOptions>(configSection);
 | 
				
			||||||
    builder.Configuration.GetSection(BibblanOptions.Bibblan));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
builder.Services.AddScoped<CalibreService, CalibreService>();
 | 
					builder.Services.AddScoped<CalibreService, CalibreService>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,9 +20,9 @@ builder.Services.AddControllers();
 | 
				
			|||||||
builder.Services.AddOpenApi();
 | 
					builder.Services.AddOpenApi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var db = "metadata.db";
 | 
					builder.Services.AddDbContext<SqliteCalibreContext>(options => options.UseSqlite($"Data Source={config.CalibreDb};Mode=ReadOnly;"));
 | 
				
			||||||
var connection = $"Data Source={db};Mode=ReadOnly;";
 | 
					builder.Services.AddDbContext<PostgresCalibreContext>(options => options.UseNpgsql(config.BibblanConnection));
 | 
				
			||||||
builder.Services.AddDbContext<CalibreContext>(options => options.UseSqlite(connection));
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var app = builder.Build();
 | 
					var app = builder.Build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,7 @@
 | 
				
			|||||||
  "AllowedHosts": "*",
 | 
					  "AllowedHosts": "*",
 | 
				
			||||||
  "Bibblan": {
 | 
					  "Bibblan": {
 | 
				
			||||||
    "CalibreDb": "metadata.db",
 | 
					    "CalibreDb": "metadata.db",
 | 
				
			||||||
    "CalibreRoot": "\\\\diskstation\\Books\\"
 | 
					    "CalibreRoot": "c:\\my_books\\",
 | 
				
			||||||
 | 
					    "BibblanConnection": "Server=localhost;Port=5432;Database=bibblan;User Id=bibblanuser;Password=1234567;"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user