Switched to MariaDB/MySql setup (from SQLite).
This commit is contained in:
parent
14cf5c4ad6
commit
3b277f4397
10
README.md
10
README.md
|
@ -4,14 +4,7 @@ security and privacy related properties of the browser extensions (and Chrome
|
|||
Apps) offered in the [Chrome Web Store](https://chrome.google.com/webstore/).
|
||||
|
||||
# Dependencies
|
||||
Dependencies are managed by paket, with the exception of
|
||||
* the SQLite libraries required by the SQLProvider. For Mono,
|
||||
``configure.sh`` tries to set up everything nicely using a
|
||||
system-wide installed ``Mono.Data.Sqlite.dll``. If this fails,
|
||||
please follow the steps documented at the
|
||||
[SQLProvider website](http://fsprojects.github.io/SQLProvider/core/sqlite.html).
|
||||
* the ``sqlite3`` binary is used for creating an empty data base used
|
||||
by the SQL type provider
|
||||
Dependencies are managed by paket.
|
||||
|
||||
# Installation
|
||||
* On Linux/MacOs using mono:
|
||||
|
@ -26,7 +19,6 @@ Dependencies are managed by paket, with the exception of
|
|||
* On Windows (untested), you need to set up the initial project
|
||||
manually:
|
||||
```
|
||||
type src/resources/scholar-kpi-schema.sql | sqlite3 src/resources/scholar-kpi-schema.sqlite
|
||||
.paket/paket.bootstrapper.exe
|
||||
.paket/paket.exe install
|
||||
````
|
||||
|
|
19
configure.sh
19
configure.sh
|
@ -21,22 +21,3 @@ exit_code=$?
|
|||
if [ $exit_code -ne 0 ]; then
|
||||
exit $exit_code
|
||||
fi
|
||||
if test "$OS" = "Windows_NT"
|
||||
then
|
||||
echo "Please install System.Data.SQLite.dll into packages/SQLProvider/lib."
|
||||
else
|
||||
if [ -f /usr/lib/mono/4.5/Mono.Data.Sqlite.dll ];
|
||||
then
|
||||
if [ ! -f packages/SQLProvider/lib/Mono.Data.Sqlite.dll ];
|
||||
then
|
||||
ln -s /usr/lib/mono/4.5/Mono.Data.Sqlite.dll packages/SQLProvider/lib
|
||||
fi
|
||||
else
|
||||
echo "Please install Mono.Data.Sqlite.dll into packages/SQLProvider/lib."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Creating empty database for type provider."
|
||||
rm -f src/resources/extensions-schema.sqlite
|
||||
sqlite3 src/resources/extensions-schema.sqlite < src/resources/extensions-schema.sql
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ source https://nuget.org/api/v2
|
|||
|
||||
nuget FSharp.Core ~> 4.0.0.1 redirects: force
|
||||
nuget FsLab
|
||||
nuget Mysql.Data
|
||||
nuget SQLProvider
|
||||
nuget System.Data.Sqlite
|
||||
|
||||
group Build
|
||||
source https://nuget.org/api/v2
|
||||
|
|
|
@ -50,23 +50,6 @@
|
|||
</Otherwise>
|
||||
</Choose>
|
||||
<Import Project="$(FSharpTargetsPath)" Condition="Exists('$(FSharpTargetsPath)')" />
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<PropertyGroup>
|
||||
<__paket__System_Data_SQLite_Core_targets>net45\System.Data.SQLite.Core</__paket__System_Data_SQLite_Core_targets>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<PropertyGroup>
|
||||
<__paket__System_Data_SQLite_Core_targets>net451\System.Data.SQLite.Core</__paket__System_Data_SQLite_Core_targets>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<PropertyGroup>
|
||||
<__paket__System_Data_SQLite_Core_targets>net46\System.Data.SQLite.Core</__paket__System_Data_SQLite_Core_targets>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Import Project="..\..\.paket\paket.targets" />
|
||||
<ItemGroup>
|
||||
<Compile Include="SqlConnector.fs" />
|
||||
|
@ -75,14 +58,13 @@
|
|||
<Content Include="Google.DataTable.Net.Wrapper.XML">
|
||||
<Paket>True</Paket>
|
||||
</Content>
|
||||
<Content Include="App.config" />
|
||||
<Content Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />/
|
||||
<Reference Include="System.Numerics" />
|
||||
</ItemGroup>
|
||||
<Reference Include="System.Numerics" /></ItemGroup>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
|
@ -116,25 +98,6 @@
|
|||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.ComponentModel.DataAnnotations">
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework">
|
||||
<HintPath>..\..\packages\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer">
|
||||
<HintPath>..\..\packages\EntityFramework\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
|
@ -266,6 +229,11 @@
|
|||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data">
|
||||
<HintPath>..\..\packages\MySql.Data\lib\net45\MySql.Data.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
|
@ -280,93 +248,6 @@
|
|||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Core\lib\net45\System.Data.SQLite.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Core\lib\net451\System.Data.SQLite.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Core\lib\net46\System.Data.SQLite.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.EF6">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.EF6\lib\net45\System.Data.SQLite.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.EF6">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.EF6\lib\net451\System.Data.SQLite.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.EF6">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.EF6\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Linq\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Linq\lib\net451\System.Data.SQLite.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Linq\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
|
@ -400,5 +281,4 @@
|
|||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Import Project="..\..\packages\System.Data.SQLite.Core\build\$(__paket__System_Data_SQLite_Core_targets).targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core\build\$(__paket__System_Data_SQLite_Core_targets).targets')" Label="Paket" />
|
||||
</Project>
|
||||
|
|
|
@ -21,55 +21,35 @@ open FSharp.Data.Sql
|
|||
open System.IO
|
||||
|
||||
module SqlConnector =
|
||||
let [<Literal>] DevelopmentDB = "aa-ac.sqlite"
|
||||
let [<Literal>] FullDB = "full.sqlite"
|
||||
let [<Literal>] DatabaseDir = "archive/db"
|
||||
// static (compile time) ConnectionString
|
||||
let [<Literal>] ConnectionString = @"Data Source="
|
||||
+ __SOURCE_DIRECTORY__
|
||||
+ @"/../resources/extensions-schema.sqlite"
|
||||
+ @";Version=3"
|
||||
[<Literal>]
|
||||
let ConnectionStringName = @"ProductionExtensionDB"
|
||||
[<Literal>]
|
||||
let ResolutionPath = __SOURCE_DIRECTORY__ + @"/../../packages/MySql.Data/lib/net45"
|
||||
|
||||
// create a type alias with the connection string and database vendor settings
|
||||
type ExtensionDbProvider = SqlDataProvider<
|
||||
ConnectionString = ConnectionString,
|
||||
DatabaseVendor = Common.DatabaseProviderTypes.SQLITE,
|
||||
// ResolutionPath = ResolutionPath,
|
||||
DatabaseVendor = Common.DatabaseProviderTypes.MYSQL,
|
||||
ConnectionStringName = ConnectionStringName,
|
||||
ResolutionPath = ResolutionPath,
|
||||
IndividualsAmount = 500,
|
||||
UseOptionTypes = true >
|
||||
|
||||
type ExtensionDbType = ExtensionDbProvider.dataContext
|
||||
|
||||
type Db = Dev | Prod | Auto | Custom of string
|
||||
let rec getCtx dir = let archiveDir = function
|
||||
| None -> __SOURCE_DIRECTORY__ + @"/../.."
|
||||
| Some s -> s
|
||||
function
|
||||
| Dev -> ExtensionDbProvider.GetDataContext(sprintf "Data Source=%s/%s/%s;Version=3"
|
||||
(archiveDir dir) DatabaseDir DevelopmentDB)
|
||||
| Prod -> ExtensionDbProvider.GetDataContext(sprintf "Data Source=%s/%s/%s;Version=3"
|
||||
(archiveDir dir) DatabaseDir FullDB)
|
||||
| Custom db -> ExtensionDbProvider.GetDataContext(sprintf "Data Source=%s/%s/%s;Version=3"
|
||||
(archiveDir dir) DatabaseDir db)
|
||||
| Auto -> if File.Exists(sprintf "%s/%s/%s" (archiveDir dir) DatabaseDir FullDB) then
|
||||
getCtx dir Prod
|
||||
else
|
||||
getCtx dir Dev
|
||||
|
||||
let getDownloads (ctx:ExtensionDbType) extid =
|
||||
query {
|
||||
for order in ctx.Main.Extension do
|
||||
where (order.Extid = Some extid)
|
||||
for order in ctx.Extensions.Extension do
|
||||
where (order.Extid = extid)
|
||||
select (order.Date, order.Downloads)
|
||||
} |> Seq.filter (fun (date, download) -> date.IsSome && download.IsSome)
|
||||
|> Seq.map (fun (date, download) -> (System.DateTime.Parse(date.Value),
|
||||
} |> Seq.filter (fun (_, download) -> download.IsSome)
|
||||
|> Seq.map (fun (date, download) -> (date,
|
||||
download.Value))
|
||||
|> Seq.toArray
|
||||
|
||||
let getAllExtIds (ctx:ExtensionDbType) =
|
||||
query {
|
||||
for ext in ctx.Main.Extension do
|
||||
select ext.Extid
|
||||
} |> Seq.distinct
|
||||
|> Seq.choose id
|
||||
|> Seq.toList
|
||||
for ext in ctx.Extensions.Extension do
|
||||
select ext.Extid
|
||||
distinct
|
||||
} |> Seq.toList
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<connectionStrings>
|
||||
<add name="ProductionExtensionDB" providerName="FSharp.Data.Sql.SqlTypeProvider"
|
||||
connectionString="Server=dbknecht.mherzberg.de;Database=extensions;User=achim;Password=kNFuBiEJVu5DDKZ5"/>
|
||||
</connectionStrings>
|
||||
<runtime>
|
||||
<assemblyBinding
|
||||
xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<Paket>True</Paket>
|
||||
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.4.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<connectionStrings>
|
||||
<add name="ProductionExtensionDB" providerName="FSharp.Data.Sql.SqlTypeProvider"
|
||||
connectionString="Server=<SERVER>;Database=extensions;User=<LOGIN>;Password=<PWD>"/>
|
||||
</connectionStrings>
|
||||
<runtime>
|
||||
<assemblyBinding
|
||||
xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<Paket>True</Paket>
|
||||
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.4.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
|
@ -1,4 +1,3 @@
|
|||
FSharp.Core
|
||||
FsLab
|
||||
System.Data.Sqlite
|
||||
SQLProvider
|
|
@ -1,37 +0,0 @@
|
|||
CREATE TABLE support(author, commentdate, extid, date, displayname, title, language, shortauthor, comment, PRIMARY KEY (author, commentdate, extid, date));
|
||||
CREATE VIRTUAL TABLE support_fts using fts4(content="support", author, commentdate, extid, date, displayname, title, language, shortauthor, comment);
|
||||
CREATE TABLE IF NOT EXISTS 'support_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB);
|
||||
CREATE TABLE IF NOT EXISTS 'support_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx));
|
||||
CREATE TABLE IF NOT EXISTS 'support_fts_docsize'(docid INTEGER PRIMARY KEY, size BLOB);
|
||||
CREATE TABLE IF NOT EXISTS 'support_fts_stat'(id INTEGER PRIMARY KEY, value BLOB);
|
||||
CREATE TRIGGER support_bu BEFORE UPDATE ON support BEGIN DELETE FROM support_fts WHERE docid=old.rowid;END;
|
||||
CREATE TRIGGER support_bd BEFORE DELETE ON support BEGIN DELETE FROM support_fts WHERE docid=old.rowid;END;
|
||||
CREATE TRIGGER support_au AFTER UPDATE ON support BEGIN INSERT INTO support_fts(docid, author, commentdate, extid, date, displayname, title, language, shortauthor, comment) VALUES(new.rowid, new.author, new.commentdate, new.extid, new.date, new.displayname, new.title, new.language, new.shortauthor, new.comment);END;
|
||||
CREATE TRIGGER support_ai AFTER INSERT ON support BEGIN INSERT INTO support_fts(docid, author, commentdate, extid, date, displayname, title, language, shortauthor, comment) VALUES(new.rowid, new.author, new.commentdate, new.extid, new.date, new.displayname, new.title, new.language, new.shortauthor, new.comment);END;
|
||||
CREATE TABLE review(author, commentdate, extid, date, displayname, rating, language, shortauthor, comment, PRIMARY KEY (author, commentdate, extid, date));
|
||||
CREATE VIRTUAL TABLE review_fts using fts4(content="review", author, commentdate, extid, date, displayname, rating, language, shortauthor, comment);
|
||||
CREATE TABLE IF NOT EXISTS 'review_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB);
|
||||
CREATE TABLE IF NOT EXISTS 'review_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx));
|
||||
CREATE TABLE IF NOT EXISTS 'review_fts_docsize'(docid INTEGER PRIMARY KEY, size BLOB);
|
||||
CREATE TABLE IF NOT EXISTS 'review_fts_stat'(id INTEGER PRIMARY KEY, value BLOB);
|
||||
CREATE TRIGGER review_bu BEFORE UPDATE ON review BEGIN DELETE FROM review_fts WHERE docid=old.rowid;END;
|
||||
CREATE TRIGGER review_bd BEFORE DELETE ON review BEGIN DELETE FROM review_fts WHERE docid=old.rowid;END;
|
||||
CREATE TRIGGER review_au AFTER UPDATE ON review BEGIN INSERT INTO review_fts(docid, author, commentdate, extid, date, displayname, rating, language, shortauthor, comment) VALUES(new.rowid, new.author, new.commentdate, new.extid, new.date, new.displayname, new.rating, new.language, new.shortauthor, new.comment);END;
|
||||
CREATE TRIGGER review_ai AFTER INSERT ON review BEGIN INSERT INTO review_fts(docid, author, commentdate, extid, date, displayname, rating, language, shortauthor, comment) VALUES(new.rowid, new.author, new.commentdate, new.extid, new.date, new.displayname, new.rating, new.language, new.shortauthor, new.comment);END;
|
||||
CREATE TABLE reply(author, commentdate, extid, date, displayname, replyto, language, shortauthor, comment, PRIMARY KEY (author, commentdate, extid, date));
|
||||
CREATE VIRTUAL TABLE reply_fts using fts4(content="reply", author, commentdate, extid, date, displayname, replyto, language, shortauthor, comment);
|
||||
CREATE TABLE IF NOT EXISTS 'reply_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB);
|
||||
CREATE TABLE IF NOT EXISTS 'reply_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx));
|
||||
CREATE TABLE IF NOT EXISTS 'reply_fts_docsize'(docid INTEGER PRIMARY KEY, size BLOB);
|
||||
CREATE TABLE IF NOT EXISTS 'reply_fts_stat'(id INTEGER PRIMARY KEY, value BLOB);
|
||||
CREATE TRIGGER reply_bu BEFORE UPDATE ON reply BEGIN DELETE FROM reply_fts WHERE docid=old.rowid;END;
|
||||
CREATE TRIGGER reply_bd BEFORE DELETE ON reply BEGIN DELETE FROM reply_fts WHERE docid=old.rowid;END;
|
||||
CREATE TRIGGER reply_au AFTER UPDATE ON reply BEGIN INSERT INTO reply_fts(docid, author, commentdate, extid, date, displayname, replyto, language, shortauthor, comment) VALUES(new.rowid, new.author, new.commentdate, new.extid, new.date, new.displayname, new.replyto, new.language, new.shortauthor, new.comment);END;
|
||||
CREATE TRIGGER reply_ai AFTER INSERT ON reply BEGIN INSERT INTO reply_fts(docid, author, commentdate, extid, date, displayname, replyto, language, shortauthor, comment) VALUES(new.rowid, new.author, new.commentdate, new.extid, new.date, new.displayname, new.replyto, new.language, new.shortauthor, new.comment);END;
|
||||
CREATE TABLE category (extid TEXT,date TEXT,category TEXT,PRIMARY KEY (extid, date, category));
|
||||
CREATE TABLE content_script_url (crx_etag TEXT,url TEXT,PRIMARY KEY (crx_etag, url));
|
||||
CREATE TABLE permission (crx_etag TEXT,permission TEXT,PRIMARY KEY (crx_etag, permission));
|
||||
CREATE TABLE crx (crx_etag TEXT PRIMARY KEY,filename TEXT,size INTEGER,publickey BLOB);
|
||||
CREATE TABLE jsfile (crx_etag TEXT,path TEXT,size INTEGER,md5 TEXT,PRIMARY KEY (crx_etag, path));
|
||||
CREATE TABLE status (extid TEXT,date TEXT,crx_status INTEGER,overview_status INTEGER,overview_exception TEXT,PRIMARY KEY (extid, date));
|
||||
CREATE TABLE extension (extid TEXT,date TEXT,name TEXT,version TEXT,description TEXT,downloads INTEGER,rating REAL,ratingcount INTEGER,fulldescription TEXT,developer TEXT,itemcategory TEXT,crx_etag TEXT,lastupdated TEXT,PRIMARY KEY (extid, date),FOREIGN KEY (crx_etag) REFERENCES crx(crx_etag));
|
|
@ -34,22 +34,20 @@ open XPlot.GoogleCharts.Deedle
|
|||
open LogicalHacking.ExtensionDsLab.Archive.SqlConnector
|
||||
|
||||
|
||||
let ctx = getCtx None Auto
|
||||
let ctx = ExtensionDbProvider.GetDataContext()
|
||||
let chartDownloads extIds = (List.map (fun e -> (series (getDownloads ctx e))) extIds)
|
||||
|> Chart.Line
|
||||
|> Chart.WithOptions (Options(legend=Legend(position="bottom")))
|
||||
|> Chart.WithLabels extIds
|
||||
|
||||
|
||||
chartDownloads (List.take 5 (getAllExtIds ctx))
|
||||
chartDownloads ["lkllajgbhondgjjnhmmgbjndmogapinp"]
|
||||
// chartDownloads (List.take 5 (getAllExtIds ctx))
|
||||
|
||||
let extData =
|
||||
query {for x in ctx.Main.Extension do
|
||||
query {for x in ctx.Extensions.Extension do
|
||||
select (x.Date, x.Name, x.Downloads) }
|
||||
|> Seq.filter (fun (date, name, download) -> date.IsSome && name.IsSome && download.IsSome)
|
||||
|> Seq.map (fun (date, name, download) -> (System.DateTime.Parse(date.Value), name.Value,
|
||||
download.Value))
|
||||
|> Seq.filter (fun (date, name, download) -> name.IsSome && download.IsSome)
|
||||
|> Seq.map (fun (date, name, download) -> (date, name.Value, download.Value))
|
||||
|> Frame.ofRecords
|
||||
|> Frame.indexColsWith ["Date"; "Name"; "Downloads"]
|
||||
|
||||
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
|
||||
<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<Paket>True</Paket>
|
||||
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="4.4.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding></runtime></configuration>
|
|
@ -53,23 +53,6 @@
|
|||
</Otherwise>
|
||||
</Choose>
|
||||
<Import Project="$(FSharpTargetsPath)" />
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<PropertyGroup>
|
||||
<__paket__System_Data_SQLite_Core_targets>net45\System.Data.SQLite.Core</__paket__System_Data_SQLite_Core_targets>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<PropertyGroup>
|
||||
<__paket__System_Data_SQLite_Core_targets>net451\System.Data.SQLite.Core</__paket__System_Data_SQLite_Core_targets>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<PropertyGroup>
|
||||
<__paket__System_Data_SQLite_Core_targets>net46\System.Data.SQLite.Core</__paket__System_Data_SQLite_Core_targets>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
@ -85,7 +68,7 @@
|
|||
<Content Include="Google.DataTable.Net.Wrapper.XML">
|
||||
<Paket>True</Paket>
|
||||
</Content>
|
||||
<Content Include="App.config" />
|
||||
<Content Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
|
@ -131,25 +114,6 @@
|
|||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.ComponentModel.DataAnnotations">
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework">
|
||||
<HintPath>..\..\packages\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer">
|
||||
<HintPath>..\..\packages\EntityFramework\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
|
@ -295,93 +259,6 @@
|
|||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Core\lib\net45\System.Data.SQLite.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Core\lib\net451\System.Data.SQLite.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Core\lib\net46\System.Data.SQLite.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.EF6">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.EF6\lib\net45\System.Data.SQLite.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.EF6">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.EF6\lib\net451\System.Data.SQLite.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.EF6">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.EF6\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Linq\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Linq\lib\net451\System.Data.SQLite.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\..\packages\System.Data.SQLite.Linq\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Choose>
|
||||
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7')">
|
||||
<ItemGroup>
|
||||
|
@ -422,5 +299,4 @@
|
|||
<Paket>True</Paket>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\packages\System.Data.SQLite.Core\build\$(__paket__System_Data_SQLite_Core_targets).targets" Condition="Exists('..\..\packages\System.Data.SQLite.Core\build\$(__paket__System_Data_SQLite_Core_targets).targets')" Label="Paket" />
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
FSharp.Core
|
||||
FsLab
|
||||
System.Data.Sqlite
|
||||
SQLProvider
|
||||
group Test
|
||||
NUnit
|
||||
|
|
Loading…
Reference in New Issue