/// <summary> /// Load files of workspace /// </summary> /// <param name="workspace"></param> public void LoadFiles(string workspace) { using (SYMBOLDB db = new DataModels.Symbols.SYMBOLDB(_dbProvider, _connectionString)) { // delete all db .GetTable <File>() .Delete(); var files = from f in Directory.GetFiles(workspace, "*.*", SearchOption.AllDirectories) where Path.GetExtension(f).ToLower().StartsWith(".c") || Path.GetExtension(f).ToLower().StartsWith(".h") select f.ToLower().Replace(@"\", "/"); db.BeginTransaction(); foreach (var file in files) { long fid = (long)db .InsertWithIdentity( new File { Name = file, LeafName = Path.GetFileName(file) }); _dictFile.Add(file, (int)fid); } db.CommitTransaction(); } }
/// <summary> /// Create Database /// </summary> /// <returns></returns> public bool Create() { // Delete Symbol database DeleteOldDatabase(); //// accessing with LINQ to SQL using (var db = new DataModels.Symbols.SYMBOLDB(_dbProvider, _connectionString)) { var sp = db.DataProvider.GetSchemaProvider(); var dbSchema = sp.GetSchema(db); try { db.BeginTransaction(); } catch (Exception e) { MessageBox.Show($"SQLite locked?\r\n\r\n{e}", "Can't begin transaction"); return(false); } if (dbSchema.Tables.All(t => t.TableName != "code_item_kinds")) { db.CreateTable <CodeItemKinds>(); } if (dbSchema.Tables.All(t => t.TableName != "files")) { db.CreateTable <File>(); } if (dbSchema.Tables.All(t => t.TableName != "code_items")) { db.CreateTable <CodeItems>(); } if (dbSchema.Tables.All(t => t.TableName != "code_item_usages")) { db.CreateTable <CodeItemUsages>(); } db.GetTable <CodeItemKinds>() .Delete(); db.Insert(new CodeItemKinds { Id = 1, Name = "File" }); db.Insert(new CodeItemKinds { Id = 2, Name = "Module" }); db.Insert(new CodeItemKinds { Id = 3, Name = "Namespace" }); db.Insert(new CodeItemKinds { Id = 4, Name = "Package" }); db.Insert(new CodeItemKinds { Id = 5, Name = "Class" }); db.Insert(new CodeItemKinds { Id = 6, Name = "Method" }); db.Insert(new CodeItemKinds { Id = 7, Name = "Property" }); db.Insert(new CodeItemKinds { Id = 8, Name = "Field" }); db.Insert(new CodeItemKinds { Id = 9, Name = "Constructor" }); db.Insert(new CodeItemKinds { Id = 10, Name = "Enum" }); db.Insert(new CodeItemKinds { Id = 11, Name = "Method" }); db.Insert(new CodeItemKinds { Id = 12, Name = "Function" }); db.Insert(new CodeItemKinds { Id = 13, Name = "Variable" }); db.Insert(new CodeItemKinds { Id = 14, Name = "Constant" }); db.Insert(new CodeItemKinds { Id = 15, Name = "String" }); db.Insert(new CodeItemKinds { Id = 16, Name = "Number" }); db.Insert(new CodeItemKinds { Id = 17, Name = "Boolean" }); db.Insert(new CodeItemKinds { Id = 18, Name = "Array" }); db.Insert(new CodeItemKinds { Id = 19, Name = "Object" }); db.Insert(new CodeItemKinds { Id = 20, Name = "Key" }); db.Insert(new CodeItemKinds { Id = 21, Name = "Null" }); db.Insert(new CodeItemKinds { Id = 22, Name = "EnumMember" }); db.Insert(new CodeItemKinds { Id = 23, Name = @"Struct" }); db.Insert(new CodeItemKinds { Id = 24, Name = "Event" }); db.Insert(new CodeItemKinds { Id = 25, Name = "Operator" }); db.Insert(new CodeItemKinds { Id = 26, Name = "TypeParameter" }); db.Insert(new CodeItemKinds { Id = 27, Name = "Type27" }); db.Insert(new CodeItemKinds { Id = 28, Name = "Type28" }); db.Insert(new CodeItemKinds { Id = 29, Name = "Type29" }); db.Insert(new CodeItemKinds { Id = 30, Name = "Type30" }); db.Insert(new CodeItemKinds { Id = 31, Name = "Type31" }); db.Insert(new CodeItemKinds { Id = 32, Name = "Type32" }); db.Insert(new CodeItemKinds { Id = 33, Name = "Type33" }); db.Insert(new CodeItemKinds { Id = 34, Name = "Type34" }); db.Insert(new CodeItemKinds { Id = 35, Name = "Type35" }); db.Insert(new CodeItemKinds { Id = 36, Name = "Type36" }); db.Insert(new CodeItemKinds { Id = 37, Name = "Type37" }); db.Insert(new CodeItemKinds { Id = 38, Name = "Type38" }); db.Insert(new CodeItemKinds { Id = 39, Name = "Type39" }); db.Insert(new CodeItemKinds { Id = 40, Name = "Type40" }); db.Insert(new CodeItemKinds { Id = 41, Name = "Type41" }); db.Insert(new CodeItemKinds { Id = 42, Name = "Type42" }); db.Insert(new CodeItemKinds { Id = 43, Name = "Type43" }); db.Insert(new CodeItemKinds { Id = 44, Name = "Type44" }); db.Insert(new CodeItemKinds { Id = 45, Name = "Type45" }); db.Insert(new CodeItemKinds { Id = 46, Name = "Type46" }); db.Insert(new CodeItemKinds { Id = 47, Name = "Type47" }); db.Insert(new CodeItemKinds { Id = 48, Name = "Type48" }); db.Insert(new CodeItemKinds { Id = 49, Name = "Type49" }); db.Insert(new CodeItemKinds { Id = 50, Name = "Type50" }); db.Insert(new CodeItemKinds { Id = 51, Name = "Type51" }); db.Insert(new CodeItemKinds { Id = 52, Name = "Type52" }); db.Insert(new CodeItemKinds { Id = 53, Name = "Type53" }); db.Insert(new CodeItemKinds { Id = 54, Name = "Type54" }); db.Insert(new CodeItemKinds { Id = 55, Name = "Type55" }); db.Insert(new CodeItemKinds { Id = 56, Name = "Type56" }); db.Insert(new CodeItemKinds { Id = 57, Name = "Type57" }); db.Insert(new CodeItemKinds { Id = 58, Name = "Type58" }); db.Insert(new CodeItemKinds { Id = 59, Name = "Type59" }); db.Insert(new CodeItemKinds { Id = 200, Name = "Type200" }); db.Insert(new CodeItemKinds { Id = 201, Name = "Type201" }); db.Insert(new CodeItemKinds { Id = 202, Name = "Type202" }); db.Insert(new CodeItemKinds { Id = 203, Name = "Type203" }); db.Insert(new CodeItemKinds { Id = 204, Name = "Type204" }); db.Insert(new CodeItemKinds { Id = 205, Name = "Type205" }); db.Insert(new CodeItemKinds { Id = 206, Name = "Type206" }); db.Insert(new CodeItemKinds { Id = 207, Name = "Type207" }); db.Insert(new CodeItemKinds { Id = 208, Name = "Type208" }); db.Insert(new CodeItemKinds { Id = 209, Name = "Type209" }); db.Insert(new CodeItemKinds { Id = 210, Name = "Type210" }); db.Insert(new CodeItemKinds { Id = 211, Name = "Type211" }); db.Insert(new CodeItemKinds { Id = 212, Name = "Type212" }); db.Insert(new CodeItemKinds { Id = 213, Name = "Type213" }); db.Insert(new CodeItemKinds { Id = 214, Name = "Type214" }); db.Insert(new CodeItemKinds { Id = 215, Name = "Type215" }); db.Insert(new CodeItemKinds { Id = 216, Name = "Type216" }); db.Insert(new CodeItemKinds { Id = 217, Name = "Type217" }); db.Insert(new CodeItemKinds { Id = 218, Name = "Type218" }); db.Insert(new CodeItemKinds { Id = 219, Name = "Type219" }); db.Insert(new CodeItemKinds { Id = 220, Name = "Type220" }); db.Insert(new CodeItemKinds { Id = 221, Name = "Type221" }); db.Insert(new CodeItemKinds { Id = 222, Name = "Type222" }); db.Insert(new CodeItemKinds { Id = 223, Name = "Type223" }); db.Insert(new CodeItemKinds { Id = 224, Name = "Type224" }); db.Insert(new CodeItemKinds { Id = 225, Name = "Type225" }); db.Insert(new CodeItemKinds { Id = 226, Name = "Type226" }); db.Insert(new CodeItemKinds { Id = 227, Name = "Type227" }); db.Insert(new CodeItemKinds { Id = 228, Name = "Type228" }); db.Insert(new CodeItemKinds { Id = 229, Name = "Type229" }); db.Insert(new CodeItemKinds { Id = 230, Name = "Type230" }); db.Insert(new CodeItemKinds { Id = 231, Name = "Type231" }); db.Insert(new CodeItemKinds { Id = 232, Name = "Type232" }); db.Insert(new CodeItemKinds { Id = 233, Name = "Type233" }); db.Insert(new CodeItemKinds { Id = 234, Name = "Type234" }); db.Insert(new CodeItemKinds { Id = 235, Name = "Type235" }); db.Insert(new CodeItemKinds { Id = 236, Name = "Type236" }); db.Insert(new CodeItemKinds { Id = 237, Name = "Type237" }); db.Insert(new CodeItemKinds { Id = 238, Name = "Type238" }); db.Insert(new CodeItemKinds { Id = 239, Name = "Type239" }); db.Insert(new CodeItemKinds { Id = 240, Name = "Type240" }); db.Insert(new CodeItemKinds { Id = 241, Name = "Type241" }); db.Insert(new CodeItemKinds { Id = 242, Name = "Type242" }); db.Insert(new CodeItemKinds { Id = 243, Name = "Type243" }); db.Insert(new CodeItemKinds { Id = 244, Name = "Type244" }); db.Insert(new CodeItemKinds { Id = 245, Name = "Type245" }); db.Insert(new CodeItemKinds { Id = 246, Name = "Type246" }); db.Insert(new CodeItemKinds { Id = 247, Name = "Type247" }); db.Insert(new CodeItemKinds { Id = 248, Name = "Type248" }); db.Insert(new CodeItemKinds { Id = 249, Name = "Type249" }); db.Insert(new CodeItemKinds { Id = 250, Name = "Type250" }); db.Insert(new CodeItemKinds { Id = 251, Name = "Type251" }); db.Insert(new CodeItemKinds { Id = 252, Name = "Type252" }); db.Insert(new CodeItemKinds { Id = 253, Name = "TypeAlias" }); db.Insert(new CodeItemKinds { Id = 254, Name = "StaticMethod" }); db.Insert(new CodeItemKinds { Id = 255, Name = "Macro" }); MakeKindDictionary(db); db.GetTable <CodeItems>() .Delete(); db.GetTable <File>() .Delete(); db.GetTable <CodeItemUsages>() .Delete(); db.CommitTransaction(); } return(true); }